Javascript中getYear()年份在IE8/7不相容問題

來源:互聯網
上載者:User

使用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>


效果如下

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.