67

Web アプリケーションで日付を処理するために Moment.js を使用しています。サーバーはすべての日付を UTC ミリ秒単位で返します。ここで、(ユーザー設定に基づいて) 特定のタイムゾーンを適用する日付を表示する必要があります。

momentjs へのすべての呼び出しを変更して処理する代わりに、タイムゾーンをグローバルに設定する方法はありますか?

4

5 に答える 5

9
  1. npm install moment-timezone
  2. var moment = require('moment-timezone');通常の代わりにこのオブジェクトを使用しますmoment
  3. moment.tz.setDefault(String);ここで、String はタイム ゾーン識別子です。

例えば:

var moment = require('moment-timezone');
moment.tz.setDefault("America/New_York");

ドキュメント: https://momentjs.com/timezone/docs/

于 2020-01-23T12:21:21.407 に答える
3

同じ Web サイト ( http://momentjs.com/timezone/ ) にある moment-timezone ライブラリを使用し ます。次のようなことができます。

moment(utcDateTime).tz(settings.timezone).format(settings.dateFormat);

UTC をユーザーのタイムゾーンに変換するサービス関数を持つユーザー クラス/オブジェクトを実装することをお勧めします。このフィドルを見てください:

http://jsfiddle.net/guidosch/ofd4unhu/4/

日付は UTC として提供されますが、ビューはユーザー クラスの日付フォーマット メソッドを使用して、ユーザーの設定に従って UTC 日付を調整およびフォーマットします。

于 2014-12-12T15:42:59.257 に答える
-12

私は広範なテストを行っていませんが、大雑把なテストでは正しく見えます。Moment Timezone 0.0.1 でこれを行うことができました。

var serverTimezoneOffset = <?php echo timezone_offset_get(new DateTimeZone(date_default_timezone_get()), new DateTime('now')) / -60; ?>;
moment.updateOffset(new Date().getTimezoneOffset()-serverTimezoneOffset);
于 2014-03-15T04:32:34.097 に答える