代码改变世界

谷歌浏览器和IE下new Date()注意的一个小地方

2010-09-27 13:48  cnb_mtime  阅读(940)  评论(0编辑  收藏  举报

今天子啊谷歌浏览器运行了一下以前的程序,发现new Date()显示的不一样:例如

谷歌浏览器中显示:110年5月18日,在IE浏览器中显示:2010年5月18日。


这个问题是因为 javascript 的兼容性问题 

var now = new date(); 
var year = now.getYear(); 

在 大部分非IE 里面 getYear 返回的是 "当前年份-1900" 的值 , 这个根据JavaScript的国际标准 ECMAScript (http://www.mozilla.org/js/language/E262-3.pdf)来实现了.

在最新的ECMAScript标准里(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf), 建议大家使用getFullYear()来替代getYear.

但是IE没有按标准实现, 它的行为是: 
如果当前年份为1900-1999,函数将返回减去1900的数值,此数值为两位
其它的年份,函数将返回四位年份
例如如果当前是1976年,函数返回76;如果当前是2010年,函数返回2010

所以最好的解决方案是,使用getFullYear()来替代getYear 以获得对所有浏览器的兼容性支持