2016-12-13 4 views
0

はJavaScriptで私はこのDate.parse動作していない

new Date(Date.parse("2016-12-15")); 

を試してみましたが、それは日付オブジェクトを出力しますがWed Dec 14 19:00:00 EST 2016として日付と。なぜ私はそれを12月15日と期待しているのですか?

おかげ

+4

タイムゾーンのため。それはUTCとして日付を解析していますが、あなたはESTにあるので、前日と同じように表示されます。 –

+0

ESTタイムゾーン((UTC-05:00)東部時間(US&カナダ))のタイムゾーンに設定するにはどうすればよいですか? – omega

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse –

答えて

0

あなたは.Date.UTC()メソッドを使用して、特定のUTC時刻から日付オブジェクトを作成することができますが、その後は個別に値を渡すことがあります。

new Date(Date.UTC(year, month, day, hour, minute, second));

より良く、より安全なアプローチは次のようになり使用するmoment.js

0

JavaScript datesタイムゾーンが含まれていません。解析対象の日付は、UTCの深夜12時15分(2016年)と解釈されます。

文字列に戻すと、ブラウザロケールのタイムゾーンが使用され、アメリカ東海岸にあるように見えるため、適切なタイムゾーンはESTです。

7pm EST equals midnight the next day in UTC.

0

解析があなたの日付を解析するための信頼できる方法ではありません... "2014年3月7日" の日付文字列を考えると想定タイムゾーンの

違い

parse()は現地時刻を としますが、ISO形式が「2014-03-07」の場合、UTC(ES5とECMAScript 2015)の時間帯は となります。したがって、これらの文字列を使用して作成された日付オブジェクト は、システムが にローカルタイムゾーン(UTC)が設定されていない限り、サポートされているECMAScriptのバージョンに応じて、時刻が異なる場合があります( )。これは、対応する2つの日付文字列 が、 変換される文字列の形式に応じて2つの異なる値になる可能性があることを意味します。

- Sourceから

私はあなたがそのタイムゾーンでクライアントの日付を取得し、正しく日付を解析するためにMoment.jsのようなライブラリを使うべきだと思います。

関連する問題