成功最有效的方法就是向有经验的人学习!

JS中浏览器不兼容getYear()获取当前年份的问题

 最近我发现我的程序中显示的居然是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 +"");
   }

 

 

赞(0) 打赏
未经允许不得转载:陈桂林博客 » JS中浏览器不兼容getYear()获取当前年份的问题
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册