javascript - 为什么 moment.js 对待破折号和斜杠的方式不同?

标签 javascript momentjs

任何人都知道为什么:

moment('2022/03/30').format('L') => 03/29/2022
moment('2022-03-30').format('L') => 03/30/2022

这是因为时区差异吗?

最佳答案

是的。 moment.js 首先检查您的字符串是否符合 ISO8601 或 RFC2822,然后返回到 new Date()。 “2022-03-30”在 ISO8601 中有效,但“2022/03/30”则无效。 ISO8601 使用 UTC,但 new Date() 采用您的本地时区。这意味着 moment('2022-03-30') 表示 2022-03-30 00:00 UTC,而 moment('2022/03/30')代表您本地时区的 2022 年 3 月 30 日 00:00。

无论它被解释为哪个时区,它都会以您本地的时区进行格式化,因此因为您落后于 UTC,所以它会显示为前一天。

关于javascript - 为什么 moment.js 对待破折号和斜杠的方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73312875/

相关文章:

javascript - 防止html页面打开新窗口

javascript - 无法使用 ES6 Fetch 从 Twitter OAuth API 请求 token

javascript - 创建可由多个组件读取和更新的共享日期服务

javascript - Websockets 在 Chrome 中不工作 (wss) : “handshake was canceled”

javascript - 我想要 foreach 在数组中

momentjs - 使用 cljsjs/moment 让 Moment 在 Clojurescript 中工作

javascript - 如何使用时刻减去时间

javascript - 在 Moment.js 中格式化 longDateFormat

javascript - jQuery DataTables datetime-moment 没有正确解析日期,或者根本没有解析日期

当组件分开时,JavaScript Date 返回不同的值