JavaScript setFullYear()方法返回错误的日期

前端之家收集整理的这篇文章主要介绍了JavaScript setFullYear()方法返回错误的日期前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天早上我注意到了JavaScript setFullYear方法的一个特殊问题.

使用这样的方法时:

d.setFullYear(2012,2,8);

返回正确的值:

Thu Mar 08 2012 10:30:04 GMT+0000 (GMT Standard Time)

但是,如果我使用parseInt方法返回整数,则返回的日期不正确:

d.setFullYear(parseInt("2012"),parseInt("02"),parseInt("08"));

收益:

Wed Feb 29 2012 10:31:30 GMT+0000 (GMT Standard Time)

看来parseInt方法返回的值不正确,但是当我测试它时:

文件撰写(parseInt函数( “2”));

然后返回正确的值(2)

一个工作小提琴在这里:http://jsfiddle.net/rXByJ/

问题在于parseInt还是setFullYear?

最佳答案
问题是parseInt(’08’)为0.这有效:

d.setFullYear(parseInt("2012"),8);

Both parseInt(’08’) and parseInt(’09’) return zero because the
function tries to determine the correct base for the numerical system
used. In Javascript numbers starting with zero are considered octal
and there’s no 08 or 09 in octal,hence the problem.

http://www.ventanazul.com/webzine/articles/issues-parseint-javascript

解决方案是使用第二个参数:

parseInt('08',10) 

要么

Number('08')

另见How do I work around JavaScript’s parseInt octal behavior?

猜你在找的JavaScript相关文章