Javascript new Date(dateString)处理

时间:2015-04-15 20:34:54

标签: javascript

有人会解释为什么格式化相同的dateString会有不同的日期吗?

> new Date("04/08/1984")
<· Sun Apr 08 1984 00:00:00 GMT-0600 (Mountain Daylight Time)
> new Date("1984-04-08")
<· Sat Apr 07 1984 18:00:00 GMT-0600 (Mountain Daylight Time)

2 个答案:

答案 0 :(得分:7)

当您创建一个将Date参数传递给构造函数的新dateString对象时,会使用 Date.parse() 方法对其进行解析。现在,引用MDN文档(强调我的):

  

Differences in assumed time zone

     

如果日期字符串为"March 7, 2014"(或"03/07/2014"),则parse()会假定本地时区,但会给出{{1}等ISO格式它将假设时区为UTC 。因此,使用这些字符串生成的"2014-03-07"个对象将代表不同的时刻,除非系统设置了UTC的本地时区。

因此,既然您正在以ISO格式提供第二个字符串,并且您的本地时区是UTC + 6,那么您将获得比您的日期晚6个小时的日期,因为它计算为UTC 0 即可。事实上:

Date

神秘解决了!

答案 1 :(得分:1)

您的问题是,您要在0中的号码前添加"1984-04-08"。请尝试以下方法:

new Date("1984-4-8")

&#13;
&#13;
document.write(new Date("04/08/1984"));
document.write("<br>");
document.write(new Date("1984-4-8"));
&#13;
&#13;
&#13;