2015-10-05 7 views
22

JavaScriptの '2015-10-01'と '2015-10-1'の日付の違いは何ですか?JavaScriptの日付の '01'と '1'の相違

new Date('2015-10-1') 

これは、JavaScriptが日付文字列内の文字の一定量を期待しているので、これがある'Thu Oct 01 2015 00:00:00 GMT-0300'

new Date('2015-10-01') 

戻り'Wed Sep 30 2015 21:00:00 GMT-0300'

+4

私は "無効な日付= $ 1"を返します。 – ergonaut

+0

両方が私に 'Thu Oct 01 2015 00:00:00 GMT + 0300' –

+0

を与えます。別のブラウザで@ergonautテストが行​​われ、クロムではない。 – Nacho

答えて

22

MDN docs 1として、Date.parseはUTCする日付を想定します

  • ローカルタイムゾーンで日付
  • 日UTC

でありますフォーマットが完了している場合はDDです。それ以外の場合は、ローカルタイムゾーン形式になります。月の変更に関する


詳細説明:(コメント)

new Date('2015-10-1')あなたはこの文の出力を実行

がある'木2015年10月1日00:00:00 GMT-0300'。すなわちあなたの現地時間はGMT -3時間です。

しかし、あなたは出力が「水2015年9月30日午後9時00分○○秒GMT-0300」UTC時刻であるあるnew Date('2015-10-01')を実行したとき。つまり、現地時間から3時間を差し引いた時間です。

だから、1月10日深夜3時間(前日の21時間)です。すなわち9月30日21時。 documentationから

+2

Good find。これはとても奇妙ですが、サファリはもっと​​厳しく、許されません。だからベンダー特有のものです。 – ergonaut

+0

マイクロームコンソールからの結果: 'new Date( '2015-10-01')// Thu Oct 01 2015 03:00:00 GMT + 0300(MSK)' - 現地時間を使用。 –

+0

@ergonautええええええええええええええええん:ECMAScriptの仕様書では、特定の標準日付書式が必要ですが、追加の書式をサポートするための実装も許可されています([ES5 15.9.4.2](http://www.ecma-international.org/ecma -262/5.1 /#sec-15.9.4.2))。これは標準的なフォーマットではないので、それをサポートするかどうか、どのようにサポートするかは、ベンダーの実装次第です。 – apsillers

3

を返します。

(YYYY-MM-DD) 

(YYYY-MM-D) 

私は任意の有効なJavaScript Date String formatにフィットするようには思えないような第2のは、まったく何も返していることに驚いています

あなたはここに2つの形式があります。あなたが言うようにそれが戻ってきたら、JavaScriptはそれを年、月、日以外のものとして解釈する可能性が高いです。私はローカルで実行した後に見る何

+1

この動作は*あまりにも驚くべきことではないことに注意してください。ECMAScript仕様では、実装が任意の日付形式をサポートできるようになっています。標準の日付書式のみが必要ですが、任意の追加書式を使用できます。 ([ES5 15.9.4.2](http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.4.2): "文字列がそのフォーマットに従わない場合、関数は実装固有のヒューリスティックまたは実装固有の日付形式」) – apsillers

+0

しかし、この場合は '2015-10-1'が正しい結果です(返信ありがとう) – Nacho

6

new Date(dateString) 

日付ストリング

RFC2822またはISO 8601日付を表す文字列(他のフォーマットを使用することができるが、結果は予想外であってもよいです)。

'2015-10-1'約束通り('2015-10-01'は、有効なISO   8601日であるのに対し)、あなたが予期しない結果を取得するには、サポートされている形式のでもないと。

+0

しかしこの場合、 '2015-10-1'は正しい結果です(返答ありがとう) – Nacho

+0

はい、'2015-10-01'はISO-8601形式に準拠しています。 –

+0

申し訳ありませんが、私は'2015-10-1 'が正しい結果であることを意味しました – Nacho

関連する問題