私のアプリはLinuxサーバー上で実行され、時間は(当然)UTC/GMTに設定されています。ただし、アプリはMacデスクトップで開発され、通常、時刻はローカルタイムゾーンに設定されます。
実行するコード内のすべてのnew Date()
を変更できます。
var date = new Date().getTime();
したがって、サーバーの日付が常にGMTであることを確認してください。
以前のバージョンのノードは常にUTC/GMTを返すために使用されていました を理解しています。この動作を元に戻す方法はありますか?
編集:コメントごとにgetTime()にタイムゾーンオフセットを追加することを削除しました-getTime()はすでにUTCにあるため。
Node.jsのTZ
構成パラメーターを次のように使用できます。
Bash(および関連)
export TZ=UTC
Powershellの場合
$env:TC = 'UTC'
次に、両方について:
nodejs server/index.js
GetTimeメソッドによって返される値は、1970年1月1日00:00:00 UTCからのミリ秒数です。
日付/時刻を数値として保存しているとしたら(お勧めします)、getTime
は既にUTC、常にです。
次に、クライアントがサーバーに日付を要求するとします。サーバーが日付をtimestamp
として提供する場合、これはnumberであり、クライアントは次のことを実行できます。
new Date(timestamp);
また、クライアントの現地時間に正しく調整されます。
もちろん、私はあなたの問題を誤解しているかもしれません。しかし、私はこれを指摘したいだけです...
new Date().getTime() + new Date().getTimezoneOffset();
...本当に意味をなすべきではありません。それは、UTCベースの時間を取り、それからそれをさらにオフセットし、本質的に時間をダブルオフセットします。
moment.js は、日付を処理するための一般的なノードおよびブラウザーモジュールです。必要なものを提供するutcモードがあります。 http://momentjs.com/docs/#/manipulating/utc/