2013-05-20 80 views
1

例如,我有这样的:从getTimezoneOffset()中扣除后的时间戳记引用是什么?

d = new Date(2013,04,20,14,56,10) 
Mon May 20 2013 14:56:10 GMT+0800 (SGT) 
dt = d.getTime() /1000 
1369032970 

现在,timezoneoffset的值是

d.getTimezoneOffset()*60 
-28800 

所以,如果我减少了,我得到

dt -= d.getTimezoneOffset()*60 
1369061770 

我的问题是,是1369032970我的地方时间戳和1369061770 UTC时间戳?

我可以放心地说,由timezoneOffset减少的任何当前时间戳都是UTC时间戳吗?

回答

0

getTime的结果是自1970年1月1日以来的毫秒数。当地时区不起作用。所以如果你的问题是如何获得UTC时间戳,只需使用getTime的结果而不做任何修改。

“本地时间戳”的想法不是很有用。可以在将UTC时间戳应用到人类可读的日期字符串之前应用偏移量 - 但是在JavaScript中,这已经在幕后完成了。你真的不想把数字时间戳传递给其他人,除非它是严格的UTC,因为什么是“本地”的含义将会丢失。

此外,当您拨打getTimezoneOffset时,您将获得以日期-分钟表示的时刻的特定偏移量。此外,该符号与我们通常看到的时区偏移相反。例如,我住在亚利桑那州,全年的抵消时间是UTC-07:00。但致电getTimezoneOffset返回正值420。如果您应用它的时间戳,你会做以下几点:

dt -= dt.getTimezoneOffset() * 60 * 1000; 

你几乎拥有了,却忘了从秒转换为毫秒。但就像我说的,这个价值没有意义。如果你从它创建了一个新的对象Date,它将显示两次偏移 - 一次是你自己的代码,另一次是Javascript内部。