1

見つけられる限り多くのものを掘り下げてきましたが、探しているものが見つからないようです。そのため、探しているものがわからないか、不可能です。どちらにしても..

私が達成しようとしているのは、タイムスタンプの例をとることです:1373439600000そして、-12 から 12 の特定のオフセット (範囲に関する限り、それは正しいですか?) したがって、上記のタイムスタンプをそれに応じて減算し、その新しいものを渡すことができます。タイムスタンプをDate()関数に追加して、人間が読める表示用に操作できるようにします。

オフセットは 2 つの部分で構成されます。1 つのインスタンスではユーザーが指定しますが、もう 1 つのインスタンスでは、指定されてgetTimezoneOffset()いない場合はローカルにデフォルト設定されます。それで、その範囲を取り、それを扱う方法を見つけようとしています。それに応じてすべてを行う。

アイデア?私は正しいマナーでこれに近づいていますか?

私が使用しているタイムスタンプは既に UTC です。それが違いを生むかどうかはわかりません。

4

2 に答える 2

3

JavaScriptDate型には多くの問題がありますが、その主な癖の 1 つは、UTC またはローカルの 2 つのタイム ゾーンしか認識できないことです。内部および のような特定のプロパティや関数で UTC を使用します.toUTCString()が、それ以外の場合はローカル タイム ゾーンを使用します。

多くのブラウザーは、文字列からを解析するときにオフセットを受け入れDateますが、それは UTC 時刻を設定するためにのみ使用されます。外出中のものはすべて、ローカル タイム ゾーンに再び変換されます。

幸いなことに、これらの問題を回避するための優れたライブラリがいくつかあります。 Moment.jsはこれに最適です。探しているものの例を次に示します。

moment(1373439600000).zone(8).format("YYYY-MM-DD HH:mm:ss Z")

//  output: "2013-07-09 23:00:00 -08:00"

もちろん、必要に応じてフォーマットすることも、 のようなより複雑なゾーン オフセットを渡すこともできます"+05:30"。また、実際の IANA タイム ゾーンを使用する必要がある場合は、次のように実行できるmoment-timezoneコンパニオン プロジェクトがあります。

moment(1373439600000).tz('America/New_York').format("YYYY-MM-DD HH:mm:ss Z")

//  output: "2013-07-10 03:00:00 -04:00"
于 2013-07-30T21:44:03.950 に答える