10月20日某些年份的问题

Júl*_*era 11 javascript date

我在Javascript中编写了一些没有任何问题的代码.但是,当我把日期October 20, 2013,我的日期返回October 19, 2013.

这同样适用于这些年份2019,2024并且2030(未经过前几年测试,未经过测试).

这个问题出现在我测试的所有浏览器中(谷歌浏览器,Internet Explorer,Mozilla Firefox,OperaSafari).

我写的时候:

date = new Date("10/20/2013");
document.write(date);
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

2013年10月19日星期六23:00:00 GMT-0300(BRT)


有人可以告诉我为什么会这样,我该如何解决这个问题呢?

Joh*_*ner 14

2013年10月20日是BRST的转换.因此,如果您在巴西(在BRST时区),您将从BRT(UTC -3)过渡到BRST(UTC-2).

来自TimeAndDate.com:

圣保罗当前时间:2013年5月22日星期三下午3:19:14 BRT

圣保罗将留在BRT,直到2013年10月20日星期日前往BRST

过渡发生在午夜和午夜到凌晨1点被跳过.为了保证该日期的时间,您可以尝试:

date = new Date("10/20/2013 01:00:00");
Run Code Online (Sandbox Code Playgroud)

你应该得到10/20/2013 01:00:00BRST作为时区的名称.

对于参与DST的美国时区某个想要查看此问题的人; 使用2013年3月10日的美国夏令时转换点,其中凌晨2点被跳到凌晨3点:

var d = new Date("03/10/2013 02:59:59")
alert(d);   // Returns 1:59:59 AM in the Standard Time Zone

var d = new Date("03/10/2013 03:00:00")
alert(d);   // Returns 3:00:00 AM in the Daylight Time Zone
Run Code Online (Sandbox Code Playgroud)