::日付( '2012年1月15日')なぜ新しい - 私は混乱しているが、JavaScriptで新しい日付( '2012-01-15')==2160万
> new Date('2012-1-15') - new Date('2012-01-15')
21600000
のはなぜですそれ? (21600000/1000/3600 == 6時間)
::日付( '2012年1月15日')なぜ新しい - 私は混乱しているが、JavaScriptで新しい日付( '2012-01-15')==2160万
> new Date('2012-1-15') - new Date('2012-01-15')
21600000
のはなぜですそれ? (21600000/1000/3600 == 6時間)
yyyy-mm-dd
(2012-01-15)はUTCの日付として解析され、yyyy-m-dd
(2012-1-15)はローカル日付として解析されます。これはそれぞれに.toString
を使用すると表示されます。
> (new Date('2012-01-15')).toString()
"Sat Jan 14 2012 16:00:00 GMT-0800 (Pacific Standard Time)"
> (new Date('2012-1-15')).toString()
"Sun Jan 15 2012 00:00:00 GMT-0800 (Pacific Standard Time)"
私はカリフォルニア、したがって太平洋標準時にいることに注意してください。異なるタイムゾーンにいる場合、異なる結果が得られます。
JavaScriptは日付を解析するときに、ローカライズされた日付形式を試す前に、より多くの領域(UTCなど)で使用されている形式を最初に試します。 UTC日付形式の最後の部分は、GMTからのタイムゾーンオフセットです(この例のように、欠落している場合は0とみなされます)。同じ日付を取得するには、UTCタイムスタンプ(2012-01-15T00:00:00-08:00)が必要です。
これはなぜ起こるのか知ることは興味深いでしょう。 – Hamish
@ハミッシュ私は少しの説明を加えましたが、もっと深く進むべきかどうかを教えてください。 –
非常に奇妙なので、2012年10月15日はどのように解析する必要がありますか? utcとローカルの両方にすることはできません。 –
a= new Date('2012-1-16')
b= new Date('2012-01-16')
alert(a);
alert(b);
最初のケースでは、コンストラクタ関数は時刻をあなたのタイムゾーンで00:00に設定します。しかし、2番目のケースでは、GMT +00.00に対して時間を初期化します。
new Date('2012-1-15')
の結果は実装に依存します(ECMAScript standard、条項15.9.4.2)。
ここでは14400000(4時間)が印刷されます。私はGMT-4にいる。それはおそらく関連しています:) – BalusC
私にとっては失敗します - 2012-1-15は日付オブジェクト(FF 9.0.1)の代わりに無効な日付を返し、全体がNaNを返す原因となります。 –
私は18000000、5時間、私はGMT-5です...私はこの1つの@BalusCと一緒にいます。 –