javascript - 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 分”
解决方案
您可以尝试将您的时刻对象启用为本地时间模式:
moment("2020-08-21T21:49:58.000Z").local().calendar()
推荐阅读
- rust - 如何在 Rust 中构造状态对象?
- python - 用 Beautiful-soup 抓取 python
- javascript - 未定义索引 - 尝试将 base64 编码图像发布到 PHP
- c++ - 如何创建模糊着色器
- python - 调整 Selenium 浏览器窗口的大小以模拟手机屏幕
- javascript - 如何绕过下面的脚本
- php - Laravel 7 使用 Passport 进行多重身份验证
- javascript - 使用 javascript 将 PHP 变量复制到剪贴板
- python - 无法为 anaconda 运行 c++ 环境
- julia - Julia:在@formula 中,我如何指定除目标之外的所有列?