2013-12-19 20 views
1

我一直在試圖解析一些日期,但由於某些原因,他們不停地滾動到下個月 - 當他們不應該。JavaScript日期()表現奇怪,有什麼想法出錯?

採取此方案,例如:

In January there are 31 days. 

那麼爲什麼會發生這種情況:

var myDate = new Date(2013, 01, 31); 
myDate.toDateString(); // output: "Sun Mar 03 2013" 

我缺少的東西與Date(year, month, day)構造?

+0

我看了https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date但沒有任何應該如何構建它的例子:( –

回答

4

在JavaScript中的Date構造,一月是一個月0,二月是1,...十二月份爲11

這是爲什麼?

通常引用的原因是,人們可以很容易地通過一個陣列查找轉換月號放回月份名稱:

var months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; 

然後'January' === months[0]

那麼這個問題就變得記住哪些語言遵循的慣例:)

+0

新球員的共同陷阱。:-) – staticsan

+0

我真的應該更早地注意到這一點!我已經這樣做了一段時間了,我要去恥辱!歡呼@Matt! –

+0

@JamieShanikwaStreet別擔心我每隔一段時間都會被這個人咬傷:) – Matt