こんにちは、文字列を使用して JavaScript の日付オブジェクトを作成しようとしていますが、間違った日を作成し続けています。常に 1 日遅れた日を構成します。これが私のコードです
var date = new Date('2006-05-17');
取得したい日付は
Wednesday May 17 2006 00:00:00 GMT-0700 (PDT)
しかし、代わりに私は得る
Tue May 16 2006 17:00:00 GMT-0700 (PDT)
こんにちは、文字列を使用して JavaScript の日付オブジェクトを作成しようとしていますが、間違った日を作成し続けています。常に 1 日遅れた日を構成します。これが私のコードです
var date = new Date('2006-05-17');
取得したい日付は
Wednesday May 17 2006 00:00:00 GMT-0700 (PDT)
しかし、代わりに私は得る
Tue May 16 2006 17:00:00 GMT-0700 (PDT)
日付を文字列として渡す場合、実装はブラウザ固有です。 ほとんどのブラウザーは、ダッシュを解釈して、時刻が UTC であることを意味します。UTC からの負のオフセットがある場合 (そうです)、前のローカル日に表示されます。
現地の日付が必要な場合は、代わりに次のようにスラッシュを使用してみてください。
var date = new Date('2006/05/17');
もちろん、文字列から解析する必要がない場合は、代わりに個々の数値パラメーターを渡すことができますが、数値で渡される場合、月はゼロから始まることに注意してください。
var date = new Date(2006,4,17);
ただし、文字列があり、それらの文字列が日付に解析される方法に一貫性が必要な場合は、moment.jsを使用してください。
var m = moment('2006-05-17','YYYY-MM-DD');
m.format(); // or any of the other output functions
実際に起こることは、パーサーがダッシュを「YYYY-MM-DDTHH:mm:ss.sssZ」形式の ISO-8601 文字列の開始として解釈することです。これはデフォルトでは UTC 時間です (したがって、末尾の 'Z ')。
「toISOString()」日付関数を使用して、そのような日付を作成することもできます。 http://www.w3schools.com/jsref/jsref_toisostring.asp
Chrome では (IE 10 では動作しません)、日付に「00:00」または「00:00:00」を追加すると (「T」はありません)、日付に関係なく、UTC ではなくなります。ダッシュ。;)