3

LinuxとWindowsで同じブラウザ:chromeからテストしたときに、クライアント側で時間値を変換しました。

ウィンドウズ:

    var d = new Date(1995,9,1,1,15,0,0) 
    d
    Sun Oct 01 1995 01:15:00 GMT+1300 (New Zealand Daylight Time)
    d.getTime()
    **812463300000**
    var d = new Date(1995,9,1,3,15,0,0) 
    d
    Sun Oct 01 1995 03:15:00 GMT+1300 (New Zealand Daylight Time)
    d.getTime()
    **812470500000**

Linux:

 var d = new Date(1995,9,1,1,15,0,0) 
   d
   Sun Oct 01 1995 01:15:00 GMT+1200 (NZST)
   d.getTime()
   **812466900000**
   var d = new Date(1995,9,1,3,15,0,0) 
   d
   Sun Oct 01 1995 03:15:00 GMT+1300 (NZDT)
   d.getTime()
   **812470500000**

問題は、同じLinux PCにインストールされたサーバーが、クライアント側で変換する異なるミリ秒値を取得することです。次のステップは、サーバーがサーバーのタイムゾーンで値を文字列値に変換することです。

サーバー側で文字列値を変換することで解決する必要があることはわかっていますが、クライアント側で変換する必要がある場合は、誰でもこの問題を解決するための正しい指示を与えることができます。

ありがとう

4

2 に答える 2

0

クライアント(エンドユーザー)の時計に依存しないでください-あなたが言ったようにサーバー上の時間を取得します。常にGMT/UTCを使用し、人に表示する場合にのみ現地時間に変換してください。

于 2012-07-31T04:29:08.147 に答える
0

日付:

var d = new Date(1995,9,1,1,15,0,0)

現在のシステム設定を使用して現地時間に変換されます。すべての一貫性を保つために、サーバーからエポック以降のUTC時刻を送信し、それを変換します。例:

new Date(812463300000); // Sat Sep 30 22:15:00 UTC+1000 1995

サーバーの場所やシステム設定に関係なく、まったく同じ瞬間に日付オブジェクトを作成します。

于 2012-07-31T04:50:03.093 に答える