如果同时从两个不同的时区运行JavaScript代码
(new Date()).getTime()
,你会得到相同的值吗?这个值会受到运行浏览器的机器上设置的系统时间的影响吗?(new Date()).getTime()
,你会得到相同的值吗?这个值会受到运行浏览器的机器上设置的系统时间的影响吗?是的,它受系统时间影响。但是,如果本地时间正确(无论计算机设置为哪个时区),在任何时区中都应该相同。
ECMAScript标准指出(§15.9.1.1):
"ECMAScript中的时间以自1970年1月1日UTC以来的毫秒数表示。"
代码:
var today = new Date();
console.log(today);
var t = today.getTime();
console.log(t);
我在英国的电脑:
Sat Sep 21 2013 03:45:20 GMT+0100 (GMT Daylight Time)
1379731520112
我的VPS:
Sat, 21 Sep 2013 02:44:31 GMT
1379731471743
getTime值之间的差异为48,369毫秒(48秒),不是1小时的时区差异。
你不会得到相同的值 - 两个客户端浏览器选择他们的系统时间之间的差异,但是如果他们的时间设置正确,使用new Date()
获取时间戳,你应该得到两个时间之间的最小差异,因为可以获取UTC值(new Date()
返回自1970年1月1日以来经过的毫秒数,这不会改变),这是通用时间并且与位置无关。
在不同机器上获取到的时间很可能存在误差,但是(之前我说错了)JavaScript Date() 默认采用UTC时区。
通常情况下,在需要时间精确的场合,最好使用服务器时间,并在输出时进行时区修正。
getTime
并不返回本地时间。只要本地时间设置正确(针对计算机所在的任何时区),getTime
返回的UTC时间也将是正确的。 - Matthew Flaschen