我正在尝试初始化Date
这样的对象:
var d = new Date(24, 2, 1, 0, 0 ,0)
在我看来,构造函数使用的是setYear
方法,而不是setFullYear
,所以我最终得到了1924年,99%的情况下完全没问题,但现在我需要能够在任何给定年份初始化日期。
我尝试使用像Feb 2, 24 00:00:00
这样的日期字符串来解决这个问题,但我最终会在2024年2月2日结束。接下来我试图找到Date MDN documentation中的任何解决方法,但没有成功。
我最终使用了这个美女:
var d1 = new Date();
d1.setFullYear(y);
d1.setMonth(m);
d1.setDate(d);
d1.setHours(0);
d1.setMinutes(0);
d1.setSeconds(0);
让我的眼睛流血,所以我想知道,这有什么解决方法/解决方法吗?
答案 0 :(得分:5)
Ecma Script specification表示Date构造函数中的年份值被视为如下
如果y不是NaN且0≤ToInteger(y)≤99,那么让yr为1900 + ToInteger(y);否则,让你年轻。
答案 1 :(得分:3)
不确定这是否是你想要的,但我在Chrome和Firefox中尝试过这个结果相同:
new Date(24,2,12,0,0,0) //Wed Mar 12 1924 00:00:00 GMT+0100 (Romance Standard Time)
new Date(2024,2,12,0,0,0) //Tue Mar 12 2024 00:00:00 GMT+0100 (Romance Standard Time)
所以看起来这个构造函数使用setFullYear的setYear,具体取决于你传递的值有多大。
答案 2 :(得分:1)
这个怎么样:
var d = new Date(y, m, d, 0, 0 ,0)
d.setFullYear(y);