从getTimezoneOffset()中扣除后的时间戳引用是什么?

时间:2013-05-20 09:30:59

标签: javascript timezone timezone-offset

例如我有这个:

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时间戳吗?

1 个答案:

答案 0 :(得分:0)

getTime的结果是自1970年1月1日UTC以来的毫秒数。当地时区不参与其中。因此,如果您的问题是如何获取UTC时间戳,只需使用getTime中的结果而不做任何修改。

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

此外,当您致电getTimezoneOffset时,您将在日期 - 以分钟为单位所代表的时刻取回特定的偏移量。此外,该标志与我们通常看到的时区偏移相反。例如,我住在亚利桑那州,全年的偏移量为UTC-07:00。但是,对getTimezoneOffset的调用会返回420的正值。如果 将时间戳应用于其中,您将执行以下操作:

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

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