各瀏覽器中 Date 對象的 getYear 方法的返回值不一致
來源:易賢網 閱讀:1093 次 日期:2015-03-18 11:05:26
溫馨提示:易賢網小編為您整理了“各瀏覽器中 Date 對象的 getYear 方法的返回值不一致”,方便廣大網友查閱!

標準參考

根據 ECMAScript 規(guī)范附錄 B.2.4 Date.prototype.getYear() 中的描述,'getYear' 返回的是當前年份與 1900 的差值,該方法已經作廢,應使用 'getFullYear' 來代替以避免“千年蟲”問題。

問題描述

Date 對象的 getYear 方法在各瀏覽器下的返回值存在差異。

造成的影響

使用 Date.getYear 方法在不同的瀏覽器中將出現(xiàn)預料外的結果。

受影響的瀏覽器

所有瀏覽器

問題分析

根據規(guī)范,這個方法將返回當前時間的年份值與 1900 的差值,如 1800 年返回 -100,2010 返回 110。但 IE 僅在一個 1900 - 1999 年之間的日期值上調用 getYear 方法時,減去 1900,在其他的日期中返回的是實際的年份,就和 getFullYear 一樣。1

在各瀏覽器中運行以下代碼:

alert(new Date(1979,11,1).getYear());

alert(new Date(2010,2,17).getYear());

各瀏覽器下的輸出結果,如下表所示:

IE79

2010

Firefox Chrome Safari Opera79

110

可見:不能保證 Date.prototype.getYear() 在各瀏覽器下返回相同的字符串。

注:

1. 關于 IE 下的 getYear 方法的描述,請參考 MSDN - getYear Method。

解決方案

要獲得一個具體時間的年份,請不要使用 Date.prototype.getYear() 方法,使用 Date.prototype.getFullYear() 代替,以在各瀏覽器下獲得相同的表現(xiàn)。

另外,要給一個 Date 對象設置年份,也請不要使用 Date.prototype.setYear() 方法,使用 Date.prototype.setFullYear() 代替。

更多信息請查看IT技術專欄

更多信息請查看腳本欄目

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權所有:易賢網