2

なぜDate.parse("2011-11-15")Webブラウザで現在のタイムゾーンを考慮し、考慮 Date.parse("2011/11/15")しないのですか?なぜ結果が異なるのですか?

4

2 に答える 2

9

ECMA-262のセクション15.9.1.15によると、最初の形式はUTCでのISO日付と見なされています。2番目の形式は、セクション15.9.4.2に従って、実装固有の方法で検討されています。

このparse関数は、ToString演算子を引数に適用し、結果の文字列を日付と時刻として解釈します。日付と時刻に対応するUTC時間値である数値を返します。文字列は、文字列の内容に応じて、現地時間、UTC時間、またはその他のタイムゾーンの時間として解釈される場合があります。この関数は、最初に、日時文字列形式(15.9.1.15)で呼び出されたルールに従って文字列の形式を解析しようとします。文字列がその形式に準拠していない場合、関数は実装固有のヒューリスティックまたは実装固有の日付形式にフォールバックする可能性があります

したがって、「2011/11/15」は11月15日のローカルの深夜に変換されているのに対し、「2011-11-15」は11月15日のUTCの深夜に変換されていると思われます。

于 2011-11-17T11:34:32.347 に答える
1

date.parseドキュメントから

日付/時刻の文字列はISO8601形式である可能性があります。JavaScript 1.8.5 / Firefox 4以降、ISO8601のサブセットがサポートされています。たとえば、「2011-10-10」(日付のみ)または「2011-10-10T14:48:00(日付と時刻)を渡して解析できます。ISO日付のタイムゾーンはまだサポートされていないため、「2011- 10-10T14:48:00 + 0200 "(タイムゾーン付き)では、まだ意図した結果が得られません。

于 2011-11-17T11:35:49.983 に答える