2017-10-04 7 views
1

私は、さまざまな(有効な)日付文字列を取り込み、JavaScript Dateを出力する関数を持っています。なぜJavaScriptは、Date()関数に渡されたISO日付のタイムゾーンオフセットを減算するのですか?

ほとんどの文字列は、ISO形式の日付が(YYYY/MM/DD)で渡されると予想される日付を返します。ユーザーのタイムゾーンオフセットは日付からSUBTRACTEDです。

ので:

new Date("9/1/2017") //returns Fri Sep 01 2017 00:00:00 GMT-0400 (Eastern Daylight Time) 

が、私は時間を追加することにより、タイムゾーンを強制することであることを発見しました

new Date("2017-09-01") //returns Thu Aug 31 2017 20:00:00 GMT-0400 (Eastern Daylight Time) 

- "T00:00:00" ISO日付軍にそれが正しい日付&時間でしたが、JavaScriptがISOの日付だけのタイムゾーンを減算する理由が不思議でした。

+0

クロムはこれらのデータ文字列を別々に扱いますが、Firefoxはそうではありません。 –

+0

短い答えはありません。 – RobG

答えて

1

Chromeは、例として提供する2つのデータ文字列を異なる方法で処理しますが、Firefoxはそうではありません。 MDNは違いの良いリソースです。

いずれの場合でも、日付ストリングの解析は、ISO 8601以外の場合は推奨されません。その場合は、それらはすべてのブラウザで一貫してUTCとして解釈されます。 Dateコンストラクタに整数引数を指定することも一貫しています。

+0

"*一貫性のあるブラウザ*"は、最近のブラウザでのみ該当します。日付のみのフォームをUTCとして扱うことは、ISO 8601と矛盾しています。ECMAScriptの著者が何を考えていたのか疑問に思ってください。 – RobG

+0

@RobG彼らは "私はこれを完了するために10日間しかなかった"と思っていたことをかなり確信しています:) –

関連する問題