10月20日某些年份的问题

时间:2013-05-22 18:07:15

标签: javascript date

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

这同样适用于201920242030年(未经测试 前几年而不是后来)。

在我测试的所有浏览器中出现此问题( Google Chrome Internet Explorer Mozilla Firefox Opera 和< I> Safari浏览器的)。

当我写:

date = new Date("10/20/2013");
document.write(date);

我得到的结果是:

  

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


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

2 个答案:

答案 0 :(得分: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");

你应该得到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

答案 1 :(得分:0)

使用Date.parse时,某些浏览器可能会显示不正确的值(与'new Date(string)'相同)。我不知道原因,但创建日期的最佳方法是使用 Date(year, month, day) constructor

示例:

console.log(new Date(2013, 10, 20))