日期构造函数

时间:2014-02-12 15:56:21

标签: javascript date

我正在尝试初始化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);

让我的眼睛流血,所以我想知道,这有什么解决方法/解决方法吗?

3 个答案:

答案 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);