2010-12-09 30 views
2

我想這是javascript中的絕對新手問題。JavaScript中的短跑日期

我想知道' - '是什麼意思在JavaScript日期。

示例:new Date(2010,12 - 1,10,22,00,00);

12 - 1在上面說了什麼?

謝謝

+0

太糟糕了,不能接受多個答案... :(謝謝你們...... – Harsha 2010-12-09 13:28:28

回答

6

這是減去一得到11

爲什麼?這通常是因爲較早的月份數字是「關閉」的結果,因爲.getMonth()是基於0的,其他日期部分是基於1的。爲Date()簽名看起來是這樣的:

new Date(year, month, date, hour, minute, second, millisecond) 

...但month參數0-11,其中yeardate參數1-based。你認爲12爲12月,但是基於0,它是11而不是12 ......你看到的代碼風格是一種表達方式,或者至少讓你「等一下......」並看到它不是November,因爲如果作者只是在那裏放置「11」,你會直覺地想。

+0

+1 – 2010-12-09 13:12:26

2

這是一個簡單的數學運算(12 - 1 = 11)。

+0

在這種情況下,當我執行它時,它會顯示「Fri Dec 10 2010 22:00:00」。是數學運算,月份應該是11月份的 – Harsha 2010-12-09 13:09:37

3

12 - 1 == 11,一個簡單的數學表達式。

它用於通知代碼的讀者,該日期將在12月。

由於Javascript中的月份基於0(0 - 1月... 11 - 12月),因此可以更容易地看到作者的含義。

這個習語也存在於Java中。而且由於Javascript從Java中「借」了這個名字,如果它借來更多的話,它不會是一個驚喜;-)

一個for循環的索引從0開始是一個常見的習慣用法,所以Date的作者有這樣可能使用的代碼:

for (var i = 0; i < 12; ++i) { 
    console.log(new Date(2010, i, 1)); 
} 

看起來典型,但尷尬的是,當0基於索引是不自然的,就像個月內使用。