javascript - Moment js时间戳

标签 javascript momentjs

我正在使用 moment.js 来解析我的日期时间,但我感到非常困惑。

如果我执行 moment().toDate() 我得到:

Fri Aug 21 2020 21:52:48 GMT-0400 (Eastern Daylight Time)

完全正确。我展示这个是为了让您知道 moment 没有为我拉错本地时间。

我从数据库中提取的时间看起来像这样:

2020-08-21T21:49:58.000Z

如您所见,这与上述时间是同一天,但时间略有不同,例如 3 分钟前。

如果我这样做:

moment("2020-08-21T21:49:58.000Z").calendar()

它返回:

"Today at 5:49 PM"

这是不正确的。

但是,如果从时间戳末尾删除 0Z 并执行此操作:

moment("2020-08-21T21:49:58.00").calendar()

我明白了

"Today at 9:49 PM"

这是正确的。

我猜测通过查看格式时刻确定它是 UTC 时间并从中减去 4 小时。

因此,我想我会把它转换回 utc() 但是当我这样做的时候:

moment("2020-08-21T21:49:58.000Z").utc().calendar()

我得到:

"Yesterday at 9:49 PM"

它减少了 24 小时,我不确定为什么。

有没有我可以用来防止它假设时间为 UTC 格式的函数?

编辑 1:

如果我执行 moment().toDate() 我得到:

Sun Aug 23 2020 20:53:28 GMT-0400 (Eastern Daylight Time)

这是正确的。

当我尝试使用今天的时间戳时:

moment("2020-08-23T20:52:38.000Z").utc().calendar()

我得到:

"Yesterday at 8:52 PM"

最佳答案

您可以尝试将 moment 对象启用为本地时间模式:

moment("2020-08-21T21:49:58.000Z").local().calendar()

关于javascript - Moment js时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63531933/

相关文章:

javascript - 如何处理来自封装函数的 Promise

javascript - Jquery 查找图像高度不工作

javascript - 无法将 <animateTransform> 元素附加到 SVG 路径

angular - 类型 'string' 不可分配给类型 'Moment' 错误

javascript - 如何使用 moment JS 获取开始日期和结束日期的周数

javascript - 按过去 12 个月(年初至今)的日期过滤数组

javascript - 如何计算忽略时区和 DST 的目标日期之前的舍入月份和天数?

c# - 如何使用 JavaScript 或 JQuery 获取 ASP.net 中生成的控件的 ID

javascript - 在 Mouseover 上为嵌套的 div 执行一个函数

javascript - 格式化 Moment.js 持续时间