2016-05-13 61 views
0

javascript日期爲int值

var vdate= new Date(parseInt("1438405200000")); 
 
var vmonth = vdate.getMonth() + 1; 
 
alert(vmonth);

不正確當我創建日期變量從int值的JavaScript我得到不正確的月份, 在這個例子中的日期(1438405200000)是2015年8月1日

var vdate= new Date(parseInt("1438405200000")); 
var vmonth = vdate.getMonth() + 1; 
alert(vmonth); 

警報顯示7,正確的是8,這隻發生在一些PC上。可以是區域設置或類似的東西嗎?

+1

月份爲零索引。 –

+0

使用'parseInt(「1438405200000」,10)' –

+1

如果日期爲01,Javascript日期返回錯誤的月份的可能重複(http://stackoverflow.com/questions/25288781/javascript-date-returns-wrong-month- if-day-is-01) –

回答

0

原因是因爲月份是0-11而不是1-12。 (把它看成是一個數組元素。var months = ["January", "February", "March"...]

MDN Docs on Date.prototype.getMonth()

此外,你很可能會在一個時區GMT後面5個多小時。 (由於該時間戳特別對應於2015年8月1日的05:00:00)JavaScript的日期對象將嘗試將時間本地化到當前時區。 (在我的情況下,GMT-7)因此,使用getMonth()對我來說將返回6而不是7。如果本地化是期望的行爲,那麼這很好。否則,如果是UTC時間,並且您希望獲得特定的UTC表示,則應該調用getUTCMonth(),否則將補償時區偏移量。

+0

getUTCMonth()是解決方案,網站有來自不同時區的用戶 – DanielVorph