我在Javascript中编写了一些没有任何问题的代码。
但是当我把日期 October 20, 2013
,我被退回了约会 October 19, 2013
。
这同样适用于这些年份 2019
, 2024
和 2030
(未经测试
前几年而不是以后)。
在我测试的所有浏览器中出现此问题(谷歌浏览器, IE浏览器, 火狐浏览器, 歌剧 和 苹果浏览器)。
我写的时候:
date = new Date("10/20/2013");
document.write(date);
我得到的结果是:
2013年10月19日星期六23:00:00 GMT-0300(BRT)
有人可以告诉我为什么会这样,我该如何解决这个问题?
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");
你应该得到 10/20/2013 01:00:00
以BRST作为时区名称。
对于参与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
使用Date.parse时,某些浏览器可能会显示不正确的值(与'new Date(string)'相同)。我不知道原因,但创建日期的最佳方法是使用
日期(年,月,日)构造函数。
例:
console.log(new Date(2013, 10, 20))