Javascript moment.js返回“;无效日期“;三月和八月的最后一天

Javascript moment.js返回“;无效日期“;三月和八月的最后一天,javascript,date,momentjs,Javascript,Date,Momentjs,当我将年、月、日作为字符串传递到moment.js date构造函数中以获取月的最后一天时,它将返回3月和8月的“无效日期”: 时刻([“2022”、“0”、“31”])。toISOString() “2022-01-31T06:00:00.000Z” 力矩([“2022”、“1”、“28”])。toISOString() “2022-02-28T06:00:00.000Z” //行军 力矩([“2022”、“2”、“31”])。toISOString() “无效日期” 力矩([“2022”、“

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

时刻([“2022”、“0”、“31”])。toISOString()
“2022-01-31T06:00:00.000Z”
力矩([“2022”、“1”、“28”])。toISOString()
“2022-02-28T06:00:00.000Z”
//行军
力矩([“2022”、“2”、“31”])。toISOString()
“无效日期”
力矩([“2022”、“3”、“30”])。toISOString()
“2022-04-30T05:00:00.000Z”
力矩([“2022”、“4”、“31”])。toISOString()
“2022-05-31T05:00:00.000Z”
力矩([“2022”、“5”、“30”])。toISOString()
“2022-06-30T05:00:00.000Z”
力矩([“2022”、“6”、“31”])。toISOString()
“2022-07-31T05:00:00.000Z”
//八月
力矩([“2022”、“7”、“31”])。toISOString()
“无效日期”
力矩([“2022”、“8”、“30”])。toISOString()
“2022-09-30T05:00:00.000Z”
力矩([“2022”、“9”、“31”])。toISOString()
“2022-10-31T05:00:00.000Z”
力矩([“2022”、“10”、“30”])。toISOString()
“2022-11-30T06:00:00.000Z”
力矩([“2022”、“11”、“31”])。toISOString()
“2022-12-31T06:00:00.000Z”
但是,当我为Month参数指定一个整数时,这些日期起作用:

//三月
力矩([“2022”,2,“31”])。toISOString()
“2022-03-31T05:00:00.000Z”
//八月
力矩([“2022”,7,“31”])。toISOString()
“2022-08-31T05:00:00.000Z”

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

升级到moment.js的最新版本后修复了它

老例子():

最新版本工作示例():

下面是在上述JSFIDLE链接中执行的代码:

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向正确的方向轻推。

升级到最新版本的矩。js修复了它

老例子():

最新版本工作示例():

下面是在上述JSFIDLE链接中执行的代码:

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朝着正确的方向推进。

您使用的是哪个版本的矩.js?有点旧,我意识到。。。你使用的是哪个版本的moment.js?有点旧,我意识到。。。