1. 程式人生 > 實用技巧 >JS獲取四位年份和2位年份

JS獲取四位年份和2位年份

let date=new Date();
//四位
let yearFour=date.getFullYear();
//兩位
let yearFour=date.getFullYear().toString().subsr(2,2);

眾所周知,js裡面有個內建物件Date,記錄了有關係統時間的資訊。
我們只要例項化一個Date物件,var date= new Date();
然後就可以用這個物件獲取有關當前時間的各種資訊,比如年份,月份,日期以及時間等。

這裡有一個小小的問題,在獲取年份的時候,不同的瀏覽器竟然有不一樣的結果喔。

var year=date.getYear(); 
alert(year);

E中顯示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位數的年份值
var myDate = new Date();
var year=myDate.getFullYear();
var yy = year.toString().substr(2, 2); 
alert(yy)取值19
  • 2.getYear()做個3元運算來處理,
參考程式碼:比如今年是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)取值19

當時做記錄的時候忘記記錄原文連結了,作者看到之後可以私信我,我補上原文連結.