例如我有这个:
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 :(得分:0)
getTime
的结果是自1970年1月1日UTC以来的毫秒数。当地时区不参与其中。因此,如果您的问题是如何获取UTC时间戳,只需使用getTime
中的结果而不做任何修改。
“本地时间戳”的想法并不是很有用。在将时间戳呈现为人类可读的日期字符串之前,可以对UTC时间戳应用偏移量 - 但在Javascript中,已经在幕后为您完成了。你真的不想把数字时间戳传递给其他任何人,除非它是严格的UTC,因为什么是“本地”的意思将会丢失。
此外,当您致电getTimezoneOffset
时,您将在日期 - 以分钟为单位所代表的时刻取回特定的偏移量。此外,该标志与我们通常看到的时区偏移相反。例如,我住在亚利桑那州,全年的偏移量为UTC-07:00。但是,对getTimezoneOffset
的调用会返回420
的正值。如果 将时间戳应用于其中,您将执行以下操作:
dt -= dt.getTimezoneOffset() * 60 * 1000;
你几乎拥有它,但忘了从秒转换为毫秒。但就像我说的那样,这个价值毫无意义。如果您从中创建了一个新的Date
对象,它将显示两次偏移 - 一次由您自己的代码,再次由Javascript内部。