1

11 月から最初の日の数を取得しようとすると、これは正常に機能します。

var d = new Date(2013, 10, 1);    // 1st of November 2013
d.toISOString();                  // 2013-11-01T00:00:00.000Z (November)
d.getDay();                      // 5 (Correct, 1st of November = Friday = 5)

ただし、英国の夏時間 (10 月末に時計が 1 時間進む) により、10 月の最初の日を取得しようとすると、日付は最終的に前日の 23:00 に設定されます。

var d = new Date(2013, 9, 1);     // 1st of October 2013
d.toISOString();                  // 2013-09-30T23:00:00.000Z (September)
d.getDay();                      // 2 (Last day number of September)

夏時間 (およびユーザーが世界のどこにいても他の時計の調整) に関係なく、月の 1 日に常に 00:00:00 になるようにするにはどうすればよいですか?

4

3 に答える 3

4

ではなく、getDayメソッドを探していgetDateます。どちらの方法も、タイムゾーンと DST に関係なく、常に現地時間で機能します。

ただし、そうで.toISOStringはありません。時刻を UTC でフォーマットするため、混乱を招きます。.toString代わりに、現地時間も出力する関数を使用してください。

> new Date(2013, 9, 1).toISOString()
"2013-09-30T22:00:00.000Z" // my timezone's midnight in UTC
> new Date(2013, 9, 1).toString()
"Tue Oct 01 2013 00:00:00 GMT+0200" // midnight, with offset
> new Date(2013, 9, 1).getDate()
1 // the *first* day of October
> new Date(2013, 9, 1).getDay()
2 // is a Tuesday
于 2013-10-09T09:33:13.427 に答える