如果同时从2个不同的时区运行JavaScript (new Date()).getTime()
,您会得到相同的值吗?
此值是否会受运行浏览器的计算机上设置的系统时间的影响?
答案 0 :(得分:48)
是的,它受系统时间的影响。但是,如果当地时间正确(对于计算机设置的任何时区),则在任何时区都应该相同。
ECMAScript标准说(§15.9.1.1):
“时间是在ECMAScript中测量的 自1970年1月1日起的毫秒数 UTC“。
答案 1 :(得分:22)
代码:
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小时的区域差异
答案 2 :(得分:6)
你不会得到相同的价值 - 两个客户的浏览器之间的差异,但是如果他们的时间设置正常,你应该得到两次,因为使用{{1}获得时间戳的差异很小},你可以得到UTC值(new Date()
返回自1970年1月1日以来经过的毫秒数,并且不会改变),这是通用时间并且与位置无关。
答案 3 :(得分:2)
机器之间达到的时间之间很可能总是存在偏差,但(之前我错了)JavaScript Date()将UTC时区视为默认值。
通常,当时间必不可少时,最好只需使用服务器时间,并根据需要对输出中的时区进行修正。
答案 4 :(得分:2)
如果您希望在不同时区使用与服务器相同的日期,则可能需要执行此操作:
var UTC=new Date(Date.UTC(serverYear,serverMonth-1,serverDate,0,0,0,0));