2014-02-12 89 views
1

我試圖初始化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); 

這讓我的眼睛流血,所以我不知道,有沒有這方面的任何解決方案/解決方法嗎?

回答

5

Ecma Script specification指出,在日期構造年值視爲如下

如果y不爲NaN和0≤ToInteger(Y)≤99,然後讓年是1900 + ToInteger(Y);否則,讓y爲y。

+0

+1查找規範參考 – Alnitak

+0

謝謝你的澄清! –

3

不知道這是否是你想要的,但我在Chrome和火狐同樣的結果嘗試這樣做:

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) 

如此看來,這個構造函數使用setYear調用setFullYear的依賴有多大的價值,你通過。

1

如何:

var d = new Date(y, m, d, 0, 0 ,0) 
d.setFullYear(y); 
+0

我不認爲他真的想要24公元。 – Alnitak

+1

我實際上是:) –

+0

很難說這個問題,可能需要24或1924年或2024年,但他確實說「但現在我需要能夠在任何給定的一年初始化日期。」但這是一個更短的方法。 – Xotic750