我有以下使用Moment.js的JavaScript代码。
问题是我希望以下这些值相等(目前它们不相等):
- `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`将其解析为正确的时区。
你有任何想法吗?
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`将其解析为正确的时区。
你有任何想法吗?
GMT-ZZ
的原因是因为文档中有这样一个例子:Offset from UTC as +-HH:mm, +-HHmm, or Z
。这真的让我困扰了很久,因为我以为它只会解析-0400
而不是GMT-0400
。谢谢!! - Charlie Fish[GMT]ZZ
。在解析时不是必需的,除非您打开了严格模式,但无论如何都可能希望用于格式化输出。 - Matt Johnson-Pint