javascript - 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>
问题是我希望以下值彼此相等(它们目前不是):
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 解析文档,我应该能够将ZZ
其解析为正确的时区。
知道我在这里做错了什么吗?
解决方案
如评论中所述,将代码更改为以下有效:
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
格式字符串有效。
推荐阅读
- linux - 无法打开 Pyinstaller 的输出文件
- reactjs - 如何将弹出框 MATERIAL-UI 功能组件转换为基于类的组件?
- python - 如何使用 CTRL C 获取文本
- node.js - 使用 Azure ZipDeploy,我的 Node.js 应用程序应该监听哪个端口?
- graphql - 将没有 ID 字段的表用于 GraphQL 服务器进行中继
- tarantool - tarantool Java 连接器和空间 ID
- c# - 如何从 WPF 应用程序提供 RESTful Web 服务?
- struts2 - 如果在相应的操作执行期间发生任何异常,如何防止拦截器在操作后调用
- cloud-foundry - 从托管的 Cloud Foundry 应用程序创建 Cloud Foundry 服务
- php - 如何结合名字和姓氏,然后在奏鸣曲管理中用全名列显示