遇到這樣一個問題,就是去獲取一個日期控件的值與另一個來進行對比,獲取一個區間值如圖所示。
但是遇到了以下問題,我把獲取的值在控制台打印了出來:

第一個值獲取之后實例化成了一個日期對象,沒有什么異常的。但是第二個值的結果就不正確了:
使用的函數和方法都是一樣的,為什么會有這樣的現象呢,並且在Chrome 和 Firefox 下結果頁是正確的,只有在IE下才會這樣。
然后我將parseInt轉化之后的值都打印了出來查看:

第一個值沒有問題,第二個值因為js的月份是從0開始計算的,所以在實例化的時候去減了一個1,也沒有什么問題。但是第三個值卻為0。越來問題出現在這。
於是去查了下parseInt的用法,原來當parseInt("09")的時候,js會默認為是八進制,所以導致轉換的時候出錯。
對parseInt的解釋是這樣的:
If the input string begins with "0", radix is eight (octal) or 10 (decimal). Exactly which radix is chosen is implementation-dependent. ECMAScript 5 specifies that 10 (decimal) is used, but not all browsers support this yet. For this reason always specify a radix when using parseInt.
大概意思是,當字符串是以0為開始的時候,他的基數可能是8進制或者10進制,這取決於瀏覽器的實現,ECMAScript 5使用的是10進制,但是不是所有的瀏覽器都會支持的,這就是為什么當我們使用parseInt的時候會有不同的結果。
因此我們在使用的時候,只要的給它傳一個另外一個參數,就是轉換的基數類型即可:parseInt(number,type)
parseInt("10")==>parseInt("010",10)===>10
parseInt("010")==>parseInt("010",8)==>8
parseInt("0x10")==>parseInt("010",16)==>16.

這樣就沒有問題了。
