unix-timestamp 和 ISO 时间之间的关系.为什么他们不平等



我正在尝试获取January 1, 2018的时间戳

moment("01-01-2018","MM-DD-YYYY").unix()

从上面的陈述来看,这是1514745000.但是当我尝试将其转换为ISOString时:

moment.unix(1514745000).toISOString()

它归结为:2017-12-31T18:30:00.000Z

为什么会这样?为什么不等于2018-01-01T00:00:00.000Z

默认情况下,时刻解析并以本地时间显示。

默认情况下,时刻使用本地时间,而toISOString输出为 UTC:

请注意,.toISOString() 以 UTC 格式返回时间戳,即使相关时刻处于本地模式也是如此。

如果要将"01-01-2018"解析为 UTC,请使用 moment.utc

下面是一个示例,显示了在本地模式和 UTC 模式下解析之间的输出差异:

// Local 01-01-2018 : 1514761200 (UTC+01:00)
console.log( moment("01-01-2018","MM-DD-YYYY").unix() )
// UTC 01-01-2018: 1514764800
console.log( moment.utc("01-01-2018","MM-DD-YYYY").unix() )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

您可以在本地与 UTC 与偏移指南中找到更多信息。

相关内容

最新更新