首页 > 解决方案 > 为什么时刻转换此日期不正确?

问题描述

我有一个来自我的 dynamodb 的 GMT 日期和时间格式,我正在尝试使用 momentjs 将其转换为 EST 格式。

2019-06-27 20:00:43.156257

一旦我将日期放入时刻,它就会将其转换为 +4 小时(当它应该是 -4 时)。

2019-06-28T00:00:43.156Z

我正在做的就是这个。

const dbdate = [value-from-db]
const momentdate = moment(dbdate);

我的输出看起来像:

数据库日期:2019-06-27 20:00:43.156257
时刻日期:2019-06-28T00:00:43.156Z

标签: javascriptamazon-dynamodbmomentjs

解决方案


这里有两个问题:

1) Moment 正在使用您的本地时区执行时区转换 - 请改用 moment.utc

2)您的日期不是“官方”支持的格式 - 尽管实际上它足够轻松来解析您的字符串。理想情况下,它应该以正确的 ISO 8601 格式提供,以避免任何兼容性问题。

您可以尝试以下方法:

 const dbdate = '2019-06-27 20:00:43.156257'.split(' ');
 const momentdate = moment.utc(dbdate[0] + 'T' + dbdate[1] + 'Z');
 alert(momentdate);

这是一个小提琴

希望这可以帮助!


推荐阅读