为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Javascript getYear()返回108?

为什么Javascript getYear()返回108?

慕田峪9158850 2019-11-30 15:04:49
为什么此javascript返回108而不是2008?它得到正确的日期和月份,但没有年份?myDate = new Date();year = myDate.getYear();年= 108?
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

由于getFullYear在较旧的浏览器中不起作用,因此可以使用以下方法:


Date.prototype.getRealYear = function() 

    if(this.getFullYear)

        return this.getFullYear();

    else

        return this.getYear() + 1900; 

};

Javascript原型可用于扩展现有对象,就像C#扩展方法一样。现在,我们可以做到这一点;


var myDate = new Date();

myDate.getRealYear();

// Outputs 2008


查看完整回答
反对 回复 2019-11-30
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

检查文档。这不是千年虫问题-缺少千年虫问题!这个决定最初是用C语言做出的,然后被复制到Perl,显然是JavaScript以及其他几种语言中。很久以前,显然仍然希望使用两位数的年份,但是值得注意的是,设计该界面的人都具有足够的前瞻性,以意识到他们需要考虑2000年及以后的情况,因此,不仅仅提供最后两年数字,它们提供了自1900年以来的年数。如果您急于要冒险,可以使用两位数字。或者,如果您希望程序继续运行,则可以将结果加100,并使用完整的四位数年份。

我记得我第一次在Perl中进行日期操作。奇怪的是,我看了看文档。显然,这不是普通的事情。一两年后,我于1999年12月31日被要求进入办公室,以修复在某个合同Perl代码中可能在最后一分钟发现的bug,这些东西我从来都没有关系。正是这个问题:标准日期调用返回了自1900年以来的年份,而程序员将其视为两位数的年份。(他们认为他们在2000年会获得“ 00”。)作为一个年轻的,没有经验的程序员,我大为震惊,因为我们为“专业”工作付出了很多额外的钱,而那些人甚至都不花心思去阅读。文档。这是幻灭多年的开始;现在我老了,愤世嫉俗。:)

在2000年,为了纪念这个经常报告的非bug,每年的YAPC Perl会议都被称为“ YAPC 19100”。

如今,至少在Perl世界中,使用标准模块进行日期处理更为有意义,该模块使用实际的四位数年份。不知道什么可能适用于JavaScript。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信