使用js顯示日期時間時發現在chrome中年份的顯示是錯誤的(如下圖),但在IE中正常。比如當前年份為2014年,此時顯示數字為114。
看來是Chrome瀏覽器和IE瀏覽器的對getYear函數的實現不同。將其修改成getFullYear即可解決問題。
其實js擷取目前時間的年份有三個常用函數:getYear()、getFullYear()、
getUTCFullYear() 這三個都是js中Date對象的方法函數,用來擷取當前年份。
下面我們來瞭解下這三個函數:
getYear()方法出生較早,在早期也一直使用OK,可是在2000年後這個方法問題多多,因為在Firefox和Safari等瀏覽器上,getYear始終返回年份與1900 年之間的差,比如1998年返回98,而2009年則會顯示109,如果大家都這麼處理也好,要加一起加,微軟自己在IE瀏覽器中把getYear給修正了,可Firefox(最新版本也沒修正這個問題)還蒙在鼓裡,仍老老實實的按照原有規則解析getYear,本來都可以指望使用者自行修正,這樣一來都沒得用,於是getFullYear、getUTCFullYear就出生了。
1、getYear()函數
使用getYear()方法可返回兩位或四位元的年份,用getYear()返回的數並不一定是4位的!處於1900年和1999年間的getYear()方法返回的只有兩位元。在此之前的或是在此之後的年份返回的都是四位元的,比如2009年,Javascript解析器應該是返回2009的,而瀏覽器則計算返回109。這應該是早期的約定,而IE埋頭改掉了。該函數已經被逐漸廢棄並不推薦使用。
代碼如下 |
複製代碼 |
<script type="text/javascript"> var d = new Date(); document.write(d.getYear());//IE輸出2009,FIREFOX輸出109 </script> |
2、getFullYea()函數
getFullYear函數則不存在此問題。getFullYear()方法可返回一個四位元年份,這樣大家(IE和FIREFOX等)都不需要運算,直接把解析值輸出來即可。
代碼如下 |
複製代碼 |
<script type="text/javascript"> var d = new Date(); document.write(d.getFullYear());//IE輸出2009,FIREFOX輸出2009 </script> |
3、getUTCFullYear()函數
getUTCFullYear()函數則是根據UTC時間返回了四位元來代表年份。與getFullYear()方法理論角度是完全不同,雖然在大部分的時間裡輸出是相同的,但是假如當天日期是12月31日或1月1日,則getUTCFullYear() 傳回值與getFullYear()傳回值就有可能不同,具體取決於當地時區和UTC通用時間之間的關係,也就是差值。
代碼如下 |
複製代碼 |
<script type="text/javascript"> var d = new Date(); document.write(d.getUTCFullYear());//IE輸出2009,FIREFOX輸出2009 </script> |
完整js代碼
代碼如下 |
複製代碼 |
function getCurDate() { var d = new Date(); var week; switch (d.getDay()){ case 1: week="星期一"; break; case 2: week="星期二"; break; case 3: week="星期三"; break; case 4: week="星期四"; break; case 5: week="星期五"; break; case 6: week="星期六"; break; default: week="星期天"; } var years = d.getFullYear(); var month = add_zero(d.getMonth()+1); var days = add_zero(d.getDate()); var hours = add_zero(d.getHours()); var minutes = add_zero(d.getMinutes()); var seconds=add_zero(d.getSeconds()); var ndate = years+"年"+month+"月"+days+"日 "+hours+":"+minutes+":"+seconds+" "+week; var divT=document.getElementById("divT"); divT.innerHTML= ndate; } function add_zero(temp) { if(temp<10) return "0"+temp; else return temp; } setInterval("getCurDate()",100); </script> html <div class="box01" id="divT"> </div> |
效果如下