設定されたタイムゾーンで事前にフォーマットされた時刻を送信するこのバックエンドがありますが、そのタイムゾーンの情報はありません。文字列は「2013-08-26 16:55:00」のようになります。
次の文字列で新しいmoment.jsインスタンスを作成できます。
var time = moment("2013-08-26 16:55:00") //this creates time in my tz
しかし、これは自分のタイムゾーンでのみインスタンスを作成します。
Moment.jsには、特定のタイムゾーンでオブジェクトのインスタンスを作成できるプラグインがあり、それはうまく機能しますが、オブジェクトに何をポイントさせたいかを言うことはできません。
私がニューヨークにいて、これを行う場合:
var time = moment("2013-08-26 16:55:00").tz("America/Los_Angeles");
その結果、時間は16:55ではなく13:55になりますが、LAです。
私が欲しいのは、16:55と言うインスタンスを作成することですが、LA時間です。
私が尋ねている理由は、これをしたいからです。
var now = moment.tz("America/Los_Angeles");
var end = moment("2013-08-26 16:55:00"); //plus something to convert LA time
var timeLeft = end.diff(now, "minutes");
それを行う方法はありますか?
ほとんどの場合、これを行うことができます:
moment.tz("2013-08-26 16:55:00", "America/Los_Angeles")
ISO8601以外の入力が必要な場合は、2番目のパラメーターとしてフォーマット文字列を指定し、3番目のパラメーターとしてタイムゾーンを指定します。
moment.tz("8/26/2013 4:55 pm", "M/D/YYYY h:mm a", "America/Los_Angeles")
そして、瞬間の「厳密な解析」モードを使用する必要がある場合、それは3番目のパラメーターに入り、タイムゾーンは4番目の位置に移動します。
moment.tz("8/26/2013 4:55 pm", "M/D/YYYY h:mm a", true, "America/Los_Angeles")
特定のタイムゾーンですべてを計算したい場合は、以下を使用してデフォルトのタイムゾーンを設定します
A)moment.tz.setDefault("America/Los_Angeles");
私のユースケース(node.jsプロジェクト)では、次のようなモーメントモジュールが必要になった直後に設定します。
_let moment = require('moment');
require('moment-timezone');
moment.tz.setDefault("America/Los_Angeles");
_
moment()
へのすべての呼び出しは、 "America/Los_Angeles"設定で時間を作成します。これは、以下を使用する場合とは異なります。
B)moment.tz("2017-03-04 00:00", "America/Los_Angeles")
OR
C)moment("2017-03-04 00:00").tz("America/Los_Angeles")
どちらもモーメントオブジェクトをUTC時間で作成し(既にデフォルトを変更していない限り)、それをロサンゼルスのタイムゾーンに変換します。
ブラウザコンソールで上記のBまたはCを実行すると、次のようになります。
__d: Fri Mar 03 2017 16:00:00 GMT-0800 (PST)
_i: "2017-3-4 00:00"
_
_dは3月3日の午後4時を示しています。これは、モーメントオブジェクトが3月4日の午前12:00にUTC時間で作成され、次に太平洋時間帯に変換されるためです。
ソース: http://momentjs.com/timezone/docs/#/using-timezones/default-timezone/