首页 > 解决方案 > Moment js时间戳

问题描述

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()

它返回:

“今天下午 5:49”

这是不正确的。

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

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

我明白了

“今天晚上 9 点 49 分”

哪个是对的。

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

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

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

我得到:

“昨天晚上 9 点 49 分”

这减少了 24 小时,我不知道为什么。

是否有一个函数可以用来防止它假设时间是 UTC 格式?

编辑1:

如果我这样做,moment().toDate()我会得到:

2020 年 8 月 23 日星期日 20:53:28 GMT-0400(东部夏令时间)

哪个是对的。

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

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

我正进入(状态:

“昨天晚上 8 点 52 分”

标签: javascriptmomentjs

解决方案


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

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

推荐阅读