首页 > 解决方案 > JavaScript Moment.js 不正确地解析时区

问题描述

我有以下使用 Moment.js 的 JavaScript 代码。

const time = "Thu Nov 01 2018 00:00:00 GMT-0400";
const momentTime = moment(time, "ddd MMM DD YYYY HH:mm:ss GMT-ZZ");
console.log(momentTime.toString()); // Thu Nov 01 2018 00:00:00 GMT-0600
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

问题是我希望以下值彼此相等(它们目前不是):

我期望momentTime.toString()相等Wed Oct 31 2018 22:00:00 GMT-0600(如果我的数学计算正确的话)。

看起来它只是出于某种原因错误地解析了该时区或 GMT 偏移量。

根据Moment.js 解析文档,我应该能够将ZZ其解析为正确的时区。

知道我在这里做错了什么吗?

标签: javascriptdatetimetimezonemomentjs

解决方案


如评论中所述,将代码更改为以下有效:

const time = "Thu Nov 01 2018 00:00:00 GMT-0400";
const momentTime = moment(time, "ddd MMM DD YYYY HH:mm:ss ZZ");
console.log(momentTime.toString()); // Wed Oct 31 2018 22:00:00 GMT-0600
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

所以基本上更改GMT-ZZZZ格式字符串有效。


推荐阅读