getYear()不能取到正确年份的解决

使用了有y2k问题的getYear()方法。按照ecmascript ed3标准,返回的是YearFromTime(LocalTime(t)) ? 1900. MS IE上之所以正常是因为JScript不合标准。

解决方案:改用 getFullYear() 方法。

 

附,JScript文档关于getYear()的说明:

这个方法已经过时,之所以提供这个方法,是为了保持向后的兼容性。请改用 getFullYear 方法。

对于1900-1999这段时间而言,返回的年份值是一个两位数字的整数,它代表了所保存的年份与 1900 年之间的差距。而对于其它的年份,返回值是一个四位的整数。例如,1996 年的返回值是 96,而 1825 和 2025 年的返回值则相应地为 1825 和 2025。

注意   对于 JScript 1.0 版,getYear 返回的值始终为 Date 对象中的年份与 1900 年之间的差距。例如,1899 年的返回值是 -1, 而 2000 年的返回值是 100。

 

注意MS的可笑之处,既然为了“保持向后的兼容性”,就不应该改变getYear在任何情况下的语义,因为它并不能预测早期代码是如何使用 getYear方法(及其可能的处理y2k问题的workaround)。而其貌似为大家方便的对1900-1999之外的年份返回4位年份,实际上是造成了:

  1. 原先可能的针对getYear的y2k问题的补丁代码(如给返回值+1900)无法奏效,相反产生非预期的值。
  2. 掩盖了getYear的y2k问题,使得程序员继
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值