1

例如我有这个:

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我的本地时间戳和1369061770UTC 时间戳是什么?

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

4

1 回答 1

0

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

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

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

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

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

于 2013-05-20T15:36:39.393 回答