3 回答

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊
由于getFullYear在較舊的瀏覽器中不起作用,因此可以使用以下方法:
Date.prototype.getRealYear = function()
{
if(this.getFullYear)
return this.getFullYear();
else
return this.getYear() + 1900;
};
Javascript原型可用于擴(kuò)展現(xiàn)有對象,就像C#擴(kuò)展方法一樣?,F(xiàn)在,我們可以做到這一點(diǎn);
var myDate = new Date();
myDate.getRealYear();
// Outputs 2008

TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊
檢查文檔。這不是千年蟲問題-缺少千年蟲問題!這個決定最初是用C語言做出的,然后被復(fù)制到Perl,顯然是JavaScript以及其他幾種語言中。很久以前,顯然仍然希望使用兩位數(shù)的年份,但是值得注意的是,設(shè)計該界面的人都具有足夠的前瞻性,以意識到他們需要考慮2000年及以后的情況,因此,不僅僅提供最后兩年數(shù)字,它們提供了自1900年以來的年數(shù)。如果您急于要冒險,可以使用兩位數(shù)字?;蛘?,如果您希望程序繼續(xù)運(yùn)行,則可以將結(jié)果加100,并使用完整的四位數(shù)年份。
我記得我第一次在Perl中進(jìn)行日期操作。奇怪的是,我看了看文檔。顯然,這不是普通的事情。一兩年后,我于1999年12月31日被要求進(jìn)入辦公室,以修復(fù)在某個合同Perl代碼中可能在最后一分鐘發(fā)現(xiàn)的bug,這些東西我從來都沒有關(guān)系。正是這個問題:標(biāo)準(zhǔn)日期調(diào)用返回了自1900年以來的年份,而程序員將其視為兩位數(shù)的年份。(他們認(rèn)為他們在2000年會獲得“ 00”。)作為一個年輕的,沒有經(jīng)驗的程序員,我大為震驚,因為我們?yōu)椤皩I(yè)”工作付出了很多額外的錢,而那些人甚至都不花心思去閱讀。文檔。這是幻滅多年的開始;現(xiàn)在我老了,憤世嫉俗。:)
在2000年,為了紀(jì)念這個經(jīng)常報告的非bug,每年的YAPC Perl會議都被稱為“ YAPC 19100”。
如今,至少在Perl世界中,使用標(biāo)準(zhǔn)模塊進(jìn)行日期處理更為有意義,該模塊使用實際的四位數(shù)年份。不知道什么可能適用于JavaScript。
添加回答
舉報