我正在使用 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/