无法在2012/10/20提前一天

bra*_*obo 1 javascript date date-arithmetic dst

试试这个:

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)
Run Code Online (Sandbox Code Playgroud)

(在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)
Run Code Online (Sandbox Code Playgroud)

Pea*_*oto 5

问题是夏令时的开始时间是10月20日在巴西(BRT)开始的.尝试使用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))
Run Code Online (Sandbox Code Playgroud)

这应该使您的日期提升与夏令时无关,从而使您的过渡顺利进行.有关更多信息,请参阅Javascript日期:处理夏令时的最佳方法是什么?

或者,您可以将日期的时间设置为中午的某些时间,例如中午,如果您真正关心的是当天.

date = new Date(2012,9,20,12)
new Date(date.getFullYear(), date.getMonth(), date.getDate()+1)
Run Code Online (Sandbox Code Playgroud)

  • 另外,`date`是一个数字,需要`date = new Date(Date.UTC(..`:P (2认同)