2011-05-26 64 views
0

我注意到jQuery函数New Date()做了一些奇怪的事情。我已经找到了解决这个问题的方法,所以我不需要帮助。我只是想明白为什么这样做。函数“新日期()”做些奇怪的事情

我有一个函数执行以下操作:

new Date(parseInt(y),parseInt(m)-1,parseInt(d)) 

实际的数字是:y= '2011', m= '07', d='01'。这工作正常,它返回日期2011年7月7日。但是,当我使用m= '08'它返回“Wed Dec 01 2010”

我跟踪到parseInt函数。不知何故parseInt('07') = 7parseInt('08') = 0 有谁知道为什么会发生这种情况?

+2

“jQuery函数新的日期()” ........ **/facedesk ** – Matt 2011-05-26 08:48:27

+1

[Workarounds for JavaScript parseInt八进制错误]的可能重复(http://stackoverflow.com/questions/850341/workarounds-for-javascript-parseint-octal-bug ) – Matt 2011-05-26 08:49:47

回答

2

First New Date()不是一个jQuery函数,而是纯JavaScript。

不幸的是,JavaScript从C语言中借了很多,在C语言中,通过在其前面加上零来编写八进制数字。八进制数字是从0到7的数字。

你必须做什么,最好的做法是说你有小数,而不是八进制。

总是给人基数形式:parseInt(Y,10),所以你的代码是:

new Date(parseInt(y, 10),parseInt(m, 10)-1,parseInt(d, 10)) 

更多parseInt函数信息:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

+0

谢谢,这解释了很多 – gen 2011-05-26 09:01:39

5

尝试new Date(parseInt(y,10),parseInt(m,10)-1,parseInt(d,10))

parseInt使用基座8,如果该字符串以零开始。