1

これを試して:

date = new Date(2012,9,20)
Sat Oct 20 2012 00:00:00 GMT-0300 (BRT)
new Date(date.getFullYear(), date.getMonth(), date.getDate()+1)
Sat Oct 20 2012 23:00:00 GMT-0300 (BRT)

(Chrome と Firebug でテスト済み)

しかし、これは機能します:

date = new Date(2012,10,20)
Sat Nov 20 2012 00:00:00 GMT-0300 (BRT)
new Date(date.getFullYear(), date.getMonth(), date.getDate()+1)
Sat Nov 21 2012 0:00:00 GMT-0300 (BRT)
4

3 に答える 3

5

問題は、ブラジル ( BRT )で 10 月 20 日にサマータイムが開始されたことです。UTC 時刻を使用してみてください。

date= new Date(Date.UTC(2012,9,20)); // zero-based month: 9->october
new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()+1))

これにより、日付の進行が夏時間とは無関係になり、移行がスムーズに行われるようになります。詳細については、Javascript の日付: 夏時間に対応する最善の方法は? を参照してください。

または、本当に気にするのがその日だけである場合は、日付の時刻を正午など、日中に設定することもできます。

date = new Date(2012,9,20,12)
new Date(date.getFullYear(), date.getMonth(), date.getDate()+1)
于 2012-12-04T13:52:45.733 に答える
1

夏時間です: この時点で GMT-0300 の時刻は 1 時間巻き戻されます。サンプルは GMT+0400 タイムゾーンで正常に動作しています。

質問1º Daylight Saving Time Java と JS が異なる動作を示すを参照してください。

于 2012-12-04T13:51:28.380 に答える
0

それはうまく動作します:

console.log(date = new Date(2012,9,20))
console.log(new Date(date.getFullYear(), date.getMonth(), date.getDate()+1))
// returns:
// Sat Oct 20 2012 00:00:00 GMT+0200 (West-Europa (zomertijd))
// Sun Oct 21 2012 00:00:00 GMT+0200 (West-Europa (zomertijd))

(末尾のローカライズされた文字列は気にしないでください)

どうやら、ローカリゼーションで開始された夏時間に達したようです。Date.UTC()ローカライズに特に時間が必要でない限り、代わりに を試してください。

于 2012-12-04T13:48:11.623 に答える