我在Date.parse
函数具有相同参数的两台计算机上略有不同。
我在IE(10和8)和FF(最新)的地址栏上运行javascript:Date.parse('11/10/2014 00:00:00 AM')
(月/日/年时间),结果是:
机器1: 1415588400000
机器2: 1415584800000
没有小时/分钟/秒,结果是相同的。
这两台机器都是Windows 7 Professional,但机器2最近已从Windows Vista更新到Windows 7.在更新之前,此命令有效。此外,Machine 2只安装了一个更新,而Machine 1安装了200个更新。
两台机器的时间和日期(格式,时区等)配置相同
在具有相同时区的两台计算机上Date.parse
导致差异的原因是什么?
答案 0 :(得分:2)
什么可能导致Date.parse
的差异
时区,用户本地化环境。
如果您想使用日期(信任),请使用:
yyyy-mm-ddThh:mm:ss[+xy:zp]
/
手动拆分并创建一个新的日期,每个参数都放在其位置。关于你的问题:
Date.parse('2014-11-10T00:00:00Z')
可以在所有浏览器中使用相同的值。注意它的UTC。
但是,(如果需要) - 只需添加时区,例如:
Date.parse('2014-11-10T00:00:00+03:00')
如果你想要一个日期对象:
new Date(Date.parse('2014-11-10T00:00:00+03:00'))
答案 1 :(得分:1)
这是一个复合问题。
阿根廷过去曾在2009年拥有夏令时。从2010年开始,他们不再拥有夏令时。 Reference Here
JavaScript有一个已知问题,即没有使用正确的DST规则,只是它知道的最新规则。 Details Here
返回1415584800000的计算机使用的是UTC-2而不是UTC-3,因为它没有获得添加2010年新规则的更新。它仍然使用2009年的规则,将此日期设置为夏令时。
此更新已包含在KB976098 - 2009年12月的Windows累积时区更新中。
您可以通过查看以下位置的注册表来验证这一点:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Argentina Standard Time\Dynamic DST
应用更新后,它应如下所示:
如果没有更新,它将没有2010年的条目。
您应始终应用时区更新 - 可以从Windows Update自动应用,也可以在microsoft.com/time上观看修改列表。