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

What is the timestamp reference after deducting from getTimezoneOffset()?

本文关键字:时间戳 引用 是什么 getTimezoneOffset      更新时间:2023-09-26

例如:

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

从UTC时间1970年1月1日开始,getTime的结果以毫秒为单位。当地时区与此无关。因此,如果您的问题是如何获得UTC时间戳,只需使用getTime的结果,无需任何修改。

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

同样,当您调用getTimezoneOffset时,您将获得由日期表示的时刻的特定偏移量,以分钟为单位。此外,该符号与我们通常看到的时区偏移量相反。例如,我住在亚利桑那州,那里全年的时差是UTC-07:00。但是对getTimezoneOffset的调用返回420的正值。如果为其应用时间戳,则需要执行以下操作:

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

你差点就搞定了,但是忘了把秒转换成毫秒。但就像我说的,这个值没有意义。如果您从它创建了一个新的Date对象,它将显示与应用偏移量两次-一次是由您自己的代码,另一次是由Javascript内部。