javascript - moment.js 在 3 月和 8 月的最后一天返回 "Invalid date"

标签 javascript date momentjs

当我将年、月、日作为字符串传递到 moment.js 日期构造函数以获取该月的最后一天时,它会返回三月和八月的“无效日期”:

moment(["2022","0","31"]).toISOString()
"2022-01-31T06:00:00.000Z"
moment(["2022","1","28"]).toISOString()
"2022-02-28T06:00:00.000Z"

//March
moment(["2022","2","31"]).toISOString()
"Invalid date"

moment(["2022","3","30"]).toISOString()
"2022-04-30T05:00:00.000Z"
moment(["2022","4","31"]).toISOString()
"2022-05-31T05:00:00.000Z"
moment(["2022","5","30"]).toISOString()
"2022-06-30T05:00:00.000Z"
moment(["2022","6","31"]).toISOString()
"2022-07-31T05:00:00.000Z"

//August
moment(["2022","7","31"]).toISOString()
"Invalid date"

moment(["2022","8","30"]).toISOString()
"2022-09-30T05:00:00.000Z"
moment(["2022","9","31"]).toISOString()
"2022-10-31T05:00:00.000Z"
moment(["2022","10","30"]).toISOString()
"2022-11-30T06:00:00.000Z"
moment(["2022","11","31"]).toISOString()
"2022-12-31T06:00:00.000Z"

但是,当我为 Month 参数指定整数时,这些日期有效:

//March
moment(["2022",2,"31"]).toISOString()
"2022-03-31T05:00:00.000Z"

//August
moment(["2022",7,"31"]).toISOString()
"2022-08-31T05:00:00.000Z"

我想知道为什么当我将 Month 参数作为字符串而不是整数传递时会发生这种情况?

最佳答案

事实证明,升级到最新版本的 moment.js 修复了这个问题。

旧的破坏示例( v2.7.0 ): https://jsfiddle.net/1Lwauz1t/1/

最新版本工作示例( v2.18.1 ): https://jsfiddle.net/dsadkpsa/

这是在上面的 jsfiddle 链接中执行的代码:

console.log(moment(["2022","2","31"]).toISOString());
console.log(moment(["2022",2,"31"]).toISOString());
console.log(moment(["2022","7","31"]).toISOString());
console.log(moment(["2022",7,"31"]).toISOString());

感谢@cochsen 在正确的方向上的插入。

关于javascript - moment.js 在 3 月和 8 月的最后一天返回 "Invalid date",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44889716/

相关文章:

javascript - UnhandledPromiseRejectionWarning : Error: Script failed to execute- Electron execute script

date - 是否有一个函数可以将 Twitter API created_at 日期转换为 ColdFusion 8+ 的正确格式?

javascript - 使用 moment 计算 2 个日期之间的天数

javascript - 如何在 Vue 模板内的 Moment.js 格式化程序上转义 HTML 字符串?

javascript - js中如何过滤对象数组?

javascript - 谷歌地图 API 中的 img 元素未触发 Onclick 事件

Java 7 NIO.2 Files.getLastModifiedTime 时区

excel - 根据颜色和日期对单元格求和

asp.net-web-api - 如何从 Javascript 将 Timespan 发送到 WebAPI

javascript - Jquery 移动设备中的导航面板