相信很多网站,特别是一些政府网站,喜欢在页面上放置当前的时间,我最近在网上瞎逛的时候注意到,部分网站显示的日期非常诡异,居然是 “110年10月4日”。首先说明下,我用的是Chrome,谷歌的浏览器,所以第一反应就是看看在IE下显示是否正常——如果一个网站做完之后都不在多 个浏览器下测试的话,那就太不负责任了。果然,IE下显示的是2010年,很正常。
图一:Chrome浏览器下显示的时间
图二:IE下显示的时间
所以,特地去查了一下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的人在使用函数的时候没有看清楚手册说明就直接用了。由此看来,虽然是一个小问题,但应该引起我们的重视!