有人会解释为什么格式化相同的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)
答案 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")
document.write(new Date("04/08/1984"));
document.write("<br>");
document.write(new Date("1984-4-8"));
&#13;