最近我发现我的程序中显示的居然是113年,理论上应该是2013年才对呀,查阅了相关资料得出的杰论是少了1900年。
用下面这段JavaScript来输出时间,FF和IE得到的结果居然不同……
var myDate = new Date(); var myYears = myDate.getYear(); document.write(myYears); // 108 on FF and 2013 on IE
查了下,原来JavaScript本来输出的就是113,而IE程序员考虑到不可能是1900年以前,所以直接给加上了。真佩服IE的超强兼容性啊。
解决方法:
由于现在已经是2013年了,所以直接加上1900。
一段通吃的代码:
var myDate = new Date(); var myYears = ( myDate.getYear() < 1900 ) ? ( 1900 + myDate.getYear() ) : myDate.getYear(); document.write(myYears); // Both FF and IE echo 2013
在ie7下能正常显示时间为2013,但在ie9下,则显示为113.
参考资料:
IE与Firefox下javascript getyear年份不同浏览器 JavaScript 的getyear年份函数兼容性问题
先举个例子
用 Firefox 上一些网站会看到这样的提示 现在时间是 106年8月8日
而用 ie 浏览器的话就显示正常的 2006年8月8日
原因就是 javascript 的兼容性问题
var today = new date();
var year = today.getYear();
在 Firefox 里面 getYear 返回的是 "当前年份-1900" 的值 (以前都如此)
而微软很NB的做了一个改动:
当today的年份大于等于2000的时候 直接把1900加上了 返回的 200X (而不是10X)
如:today年份是1999 返回99
today年份是2000 返回2000
javascript getyear一个简单的解决是加一个判断:
year = (year<1900?(1900+year):year);
项目中一个列子:获取1980年到今年的年份。
var minYear = '1980';
var date = new Date();
var yearArray = new Array();
yearArray.push(" 请选择");
var year = date.getYear();
year = (year<1900?(1900+year):year);
for(var i=Number(year);i>=Number(minYear);i–){
yearArray.push(""+ i +"");
}