7

サーバーからJSON応答があり、UTCUnixタイムスタンプが秒単位で返されます。これを、グラフで使用されるJavaScriptの日付に解析しています(ユーザーのロケールで時刻を表示します)。

私は明らかに(UTCで)持っているタイムスタンプをブラウザのロケールに変換する必要があるので、ブラウザのロケールで新しいものを作成し、それをDate呼び出しgetTimezoneOffset()て現在のロケールで「分単位のオフセット」を取得する関数を作成しました。 MDNは、両方をミリ秒に変換し、合計を返します。これで、ユーザーのロケールにJavaScript対応のUnixタイムスタンプがあります。

しかし、私はしません。

(new Date()).getTimezoneOffset()結局のところ、GMT-5では(正の)300を返し、GMT+2では-120を返します。オフセットが反転するのはなぜですか?オフセットがタイムゾーンの符号と一致することを期待していました。つまり、GMT-5に到達するには300分を減算し、GMT+2に到達するには120分を加算する必要があります。代わりに、によって返される値を減算する必要がありますgetTimezoneOffset

4

1 に答える 1

8

いいえ。

仕様(§15.9.5.26)には次のように書かれています。

15.9.5.26 Date.prototype.getTimezoneOffset()

現地時間とUTC時間の差を分単位で返します。

  1. tをこの時間値とします
  2. tがNaNの場合、NaNを返します。
  3. t − LocalTime(t))/ msPerMinuteを返します。
于 2013-02-03T04:31:03.337 に答える