2

ロケールのタイムゾーンを PST に設定して、Chrome JS コンソールでこれを試しました。

(new Date("07-15-2005"))

=> 2005 年 7 月 15 日金曜日 00:00:00 GMT-0700 (PDT)

(new Date("07-15-2005")).getTime();

=> 1121410800000

しかし....

(new Date("2005-07-15"))

=> 2005 年 7 月 14 日木曜日 17:00:00 GMT-0700 (PDT)

(new Date("2005-07-15")).getTime();

=> 1121385600000

両方で文字列の解析が行われることを期待していました。しかし、YYYY-MM-DD 形式を使用すると、タイムゾーン オフセットが想定される理由がわかりません。現地の TZ で「2005-07-15」を表現しているように見えますが、「07-15-2005」は UTC で表現されています。

正しい説明ですか?

4

3 に答える 3

1

実装はベンダー固有のようですが、日付解析のドキュメントを見ると 1.8.5の時点でjavascriptがRFC2822日付とISO8601日付の両方をサポートしていることがわかります。

Date.UTCのドキュメントによると、ISO 8601の日付は、特に指定されていない限りUTC時間であると見なされるため、タイムゾーンの差が自動的に追加されます。

RFC2822の日付は現地時間と見なされているようであり、変更されていません。

于 2012-10-03T22:20:59.660 に答える
0

ブラウザによって異なります。ECMA262 仕様では、YYYY-MM-DDフォーマットされていない関数に渡される文字列はDate、実装固有のヒューリスティックまたは実装固有の日付形式にフォールバックする可能性があると述べています。

于 2012-10-03T22:22:28.617 に答える
0

あなたの結果を再現することはできないようですが、結果はブラウザーごとに異なるようです。

参照: http://jsfiddle.net/f7DMV/

Firefox と Opera では、真ん中の行のみが正しく解析され、他は無効な日付です。

Chrome では、1 行目と 2 行目の両方が正しく解析されます (違いはありません) が、最後の行はまだ無効です。

于 2012-10-03T22:04:50.713 に答える