Javascript 什么';用数字或字符串给Date()赋值的区别是什么?

Javascript 什么';用数字或字符串给Date()赋值的区别是什么?,javascript,date,time,Javascript,Date,Time,当我用字符串给Date()对象赋值,用数字给另一个对象赋值时,尽管参数相似,但我在toLocaleString()方法中得到了不同的结果 let date1=新日期('1995 02 23'); date1.toLocaleString();//“1995年2月23日,上午12:00:00” let date2=新日期(1995年2月23日) date2.toLocaleString();//“1995年3月23日,上午12:00:00” 它们之间存在1个月的差异。在您的帮助下,我发现在数字模

当我用字符串给Date()对象赋值,用数字给另一个对象赋值时,尽管参数相似,但我在toLocaleString()方法中得到了不同的结果

let date1=新日期('1995 02 23');
date1.toLocaleString();//“1995年2月23日,上午12:00:00”
let date2=新日期(1995年2月23日)
date2.toLocaleString();//“1995年3月23日,上午12:00:00”

它们之间存在1个月的差异。

在您的帮助下,我发现在数字模式下,类月数组从0开始计数,如果将毫秒参数设置为Date(),则必须输入一个介于0到999之间的值

var myDate=新日期(1995,1,23,14,25,30999);
myDate.getMillimess();//999
myDate.myDate.ToLocalString();//“1995年2月23日,下午2:25:30”

月份在日期上是以零为基础的,因此如果您超过数字2,它将被视为三月。然而,如果你传递一个字符串,它会试图以一种人类能够理解的方式解析它,而日期通常是以一个为基础的


作为旁注,
newdate(“somestring”)
从未真正指定过,各种浏览器都添加了对各种格式的支持,因此您不能依赖它的行为。是指定的,因此是可靠的。

当给定的数字-从
0
而不是
1
开始计算月数时,不要作为注释回答。。。