7

こんにちは、文字列を使用して 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)
4

3 に答える 3

12

日付を文字列として渡す場合、実装はブラウザ固有です。 ほとんどのブラウザーは、ダッシュを解釈して、時刻が 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
于 2013-09-12T21:06:08.553 に答える
1

実際に起こることは、パーサーがダッシュを「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 ではなくなります。ダッシュ。;)

于 2013-11-19T19:54:13.043 に答える