2016-05-13 36 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