【发布时间】:2020-03-12 01:27:34
【问题描述】:
谁能解释一下为什么这两个命令会返回不同的结果:
> new Date(2019, 0, 1).getTime()
> 1546293600000
> Date.UTC(2019, 0, 1)
> 1546300800000
根据getTime方法的MDN文档:
getTime() 方法返回自 Unix 纪元以来的毫秒数*。
getTime() 始终使用 UTC 表示时间。例如,一个时区的客户端浏览器,getTime() 将与任何其他时区的客户端浏览器相同。
和 Date.UTC 方法:
Date.UTC() 方法接受类似于 Date 构造函数的参数,但将它们视为 UTC。它返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。
它们应该是一样的吗?
我只是怀疑如何计算 1924 年与今天之间的差异。因为如果我们只是在 1924 年的时间戳上加上一年(以毫秒为单位),它将会完全搞砸。有一个我完全无法理解的行为示例:
> new Date( new Date(1924, 0, 1).getTime() + 366 * 24 * 60 * 60 * 1000 )
> Wed Dec 31 1924 23:57:56 GMT+0200 (Eastern European Standard Time)
【问题讨论】:
-
我的建议是不要用 javascript 日期对象挠头,而是开始使用 momentjs。
-
new Date( Date.UTC(1924, 0, 1) + 366 * 24 * 60 * 60 * 1000 ).toUTCString()
标签: javascript