我有以下使用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>
问题是我希望以下值彼此相等(它们当前不是):
time
(Thu Nov 01 2018 00:00:00 GMT-0400
)momentTime.toString()
(Thu Nov 01 2018 00:00:00 GMT-0600
)我期望momentTime.toString()
等于Wed Oct 31 2018 22:00:00 GMT-0600
(如果我正确地进行了数学运算)。
由于某种原因,它似乎只是在错误地解析了时区或GMT偏移量。
根据Moment.js parsing documentation,我应该能够使用ZZ
将其解析为正确的时区。
知道我在做什么错吗?
答案 0 :(得分:0)
如注释中所述,将代码更改为以下工作方式:
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-ZZ
更改为ZZ
。