為什麼一些政府網站上顯示今年是 19113 年?

比如進入信訪辦的官網,上面的日期顯示的是今天是19113年7月1日。怎麼回事?


Chrome:

FireFox:

IE 10:

IE 8 以下:

為什麼會這樣? (以下都可以在 Chrome F12 、 Console中看到對應的結果。)

首先,我們在瀏覽器中獲取時間一般會用到

new Date()

這是能夠獲得正確時間的,

但是,這不是我們需要的樣式,

所以,會將這年月日等,用不同的方法提取出來。

如下鏈接有列表

JavaScript Date Object

一般情況下我們會使用 getFullYear() 來獲取年份,因為 getYear() 取值太麻煩。

Date.getYear

The getYear method returns the year minus 1900; thus:

  • For years greater than or equal to 2000, the value returned by getYear is 100 or greater. For example, if the year is 2026, getYear returns 126.
  • For years between and including 1900 and 1999, the value returned by getYear is between 0 and 99. For example, if the year is 1976, getYear returns 76.
  • For years less than 1900, the value returned by getYear is less than 0. For example, if the year is 1800, getYear returns -100.

但是,我們看看某政府網站的代碼,他們用的是 getYear()

var enabled = 0;

today = new Date();

var day;
var date;
var centry;

if (today.getDay() == 0) day = "星期日"
if (today.getDay() == 1) day = "星期一"
if (today.getDay() == 2) day = "星期二"
if (today.getDay() == 3) day = "星期三"
if (today.getDay() == 4) day = "星期四"
if (today.getDay() == 5) day = "星期五"
if (today.getDay() == 6) day = "星期六"

centry = "";

if (today.getYear() &< 2000) centry = "19"; date1 = centry + (today.getYear()) + "年" + (today.getMonth() + 1) + "月" + today.getDate() + "日 "; date2 = "" + day; document.write(date1 + date2);

因此,也就是只能獲得 113 這個尾數。

所以,他寫了這麼一句

if (today.getYear() &< 2000) centry = "19";

注意,centry 他用的 是字元串 !!(想起來了,這貨該是拷貝 19xx 年的代碼)

date1 = centry + (today.getYear())

date1 = "19" + "113" // return 19113

即使要用,

也得是這樣(雖然棄用了該方法,大多數瀏覽器還是可用的)

if (today.getYear() &< 2000) centry = 1900; date1 = (centry + today.getYear()); // return 2013

而 為什麼 IE 8 能得到 正確的值呢。

javascript date getYear() returns different result between IE and Firefox, how to approach this?

老版本 IE 中 ,getYear() 得到的就是 getFullYear() 的值(在 &> 1999 的時候,1900 ~ 1999 還是返回的最後兩位)。


==========7月2日更新================

今天再去看國家信訪局的網站,發現已經修復了。有人跟他們反映了?改得挺快,贊一個。

這是他們現在的代碼,寫法已經科學很多了。


var day="";

var month="";

var ampm="";

var ampmhour="";

var myweekday="";

var year="";

mydate=new Date();

mymonth=mydate.getMonth()+1;

myday= mydate.getDate();

myyear= mydate.getYear();

year=(myyear &> 200) ? myyear : 1900 + myyear;

document.write(year+"年"+mymonth+"月"+myday+"日");

==========以下是原回答=================

才看到……好坑爹……

我原來答在這兒了……

國家信訪局網站多少錢做的?

我直接貼過來好了

=====================

回答不了題主標題上那個問題,題主看起來也就是一句氣話。

關於「今天是 19113年7月1日 星期一」的問題則很簡單可以回答(不知道題主自己是不是程序員,如果是的話,就當我是給其他非程序員科普了)

&