getYear函数引起“诡异”的时间显示

      相信很多网站,特别是一些政府网站,喜欢在页面上放置当前的时间,我最近在网上瞎逛的时候注意到,部分网站显示的日期非常诡异,居然是 “110年10月4日”。首先说明下,我用的是Chrome,谷歌的浏览器,所以第一反应就是看看在IE下显示是否正常——如果一个网站做完之后都不在多 个浏览器下测试的话,那就太不负责任了。果然,IE下显示的是2010年,很正常。

        图一:Chrome浏览器下显示的时间

 

 

.NET中国学习网

      图二:IE下显示的时间

 

.NET中国学习网


  所以,特地去查了一下Javascript,发现该网站是使用getYear函数来获取当前年份。
  代码如下:
  <script language=JavaScript>
  today=new Date();
  function initArray(){
  this.length=initArray.arguments.length
  for(var i=0;i<this.length;i++)
  this[i+1]=initArray.arguments[i]  }
  var d=new initArray(
  "星期天",
  "星期一",
  "星期二",
  "星期三",
  "星期四",
  "星期五",
  "星期六");
  document.write("<span class="style1">",
  today.getYear(),"年",today.getMonth()+1,"月",today.getDate(),"日","</span>"," ",d[today.getDay()+1]);
  </script>
  我们可以发现,使用的是getYear()函数,查了一下JS手册,getYear函数返回的其实是当前年份距离1900年的年数。
  getYear()函数
  返回 Date 对象中的年份值。
  dateObj.getYear()
  必选项 dateObj 参数为 Date 对象。
  说明
  这个方法已经过时,之所以提供这个方法,是为了保持向后的兼容性。请改用 getFullYear 方法。
  对于1900-1999这段时间而言,返回的年份值是一个两位数字的整数,它代表了所保存的年份与 1900 年之间的差距。而对
  于其它的年份,返回值是一个四位的整数。例如,1996 年的返回值是 96,而 1825 和 2025 年的返回值则相应地为1825 和 2025。
  注意 对于 Jscript 1.0 版,getYear 返回的值始终为 Date 对象中的年份与 1900 年之间的差距。例如,1899 年的返回
  值是 -1, 而 2010 年的返回值是 110。
  此函数是在ECMAScript v1版本规定实现,到V3版本的时候已经废弃了,getFullYear才是用来获取当前年份的函数。 Chrome和Firefox等浏览器在实现的时候都是遵循标准,而IE的JScript在实现的时候却没有遵循标准,结果getYear和getFullYear函数返回的都是当 前年份。估计写Javascript的人在使用函数的时候没有看清楚手册说明就直接用了。由此看来,虽然是一个小问题,但应该引起我们的重视!

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值