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

标签 javascript momentjs

我正在尝试获取 2018 年 1 月 1 日

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

最佳答案

By default, moment parses and displays in local time.

Moment 默认使用本地时间,而 toISOString输出为 UTC:

Note that .toISOString() returns a timestamp in UTC, even if the moment in question is in local mode.

如果您想将 "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>

您可以在 Local vs UTC vs Offset 中找到更多信息指导。

关于javascript - unix-timestamp 和 ISO 时间之间的关系。他们为什么不平等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48147121/

相关文章:

javascript - 使用moment.js获取上一个工作日

javascript - 在日期属性中按天按数组重新分组

javascript - MomentJS 在 babel 编译后返回全局未定义

javascript - 如何使用 moment js 从 ISO 日期获取月份名称

javascript - 使用按钮隐藏/显示 iframe

javascript - 如何在 html 中创建模板或占位符并将它们动态添加到正文中?

javascript - 在 iframe 中创建自定义元素

Javascript:在除一个 div 之外的任何 div 上 onmousedown 时运行函数

javascript - 仅在模糊上输入验证

javascript - 我们如何让 momentJS 以 mm 为单位显示 60 分钟 :ss format?