JS 獲取當前年份後兩位的問題

轉載自:來源
所周知,js裏面有個內置對象Date,記錄了有關係統時間的信息。
我們只要實例化一個Date對象,var date= new Date();
然後就可以用這個對象獲取有關當前時間的各種信息,比如年份,月份,日期以及時間等。
這裏有一個小小的問題,在獲取年份的時候,不同的瀏覽器竟然有不一樣的結果喔。
var year=date.getYear(); alert(year);
IE中顯示2010,沒問題;但是FF,Chrome等卻顯示110,神奇呢~~~
我們仔細觀察一下,發現2010-1900=110!
溯其根源,是因爲在2000年之前,我們是兩位數來表示年份的,比如拳皇97,拳皇99, 沒有說拳皇1997的吧?
所以呢,在javascript裏,獲取的年份是默認減去1900的,當然在2000年之前,這是沒問題的,但是2000年之後,就會出現110年這樣的怪現象。
其實這麼說來,110年纔是正常的,IE中顯示2010年的原因只是IE這個“萬能”的瀏覽器自作主張地對getYear()的值加上1900罷了。
對了,這裏順便說一下,在java裏面,也有這個現象,Date對象獲取年份的時候也是默認減去1900的,不過在java裏面,getYear()這個方法被標識爲過時的,系統會提示,如果想獲取到4位數的年份,需要用Calendar對象。
好了,我們回到js。要解決這個瀏覽器顯示不同年份的問題怎麼辦呢?很簡單,兩個方法。
1.改用getFullYear()方法,直接獲取4位數的年份值
2.做個3元運算來處理,year=year<2000?year+1900:year
參考代碼:比如今年是2011年,取11
var myDate = new Date();
var year = myDate.getYear()
var year = year < 2000 ? year + 1900 : year
var yy = year.toString().substr(2, 2);
alert(yy)取值11

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章