任何人都知道为什么:
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/