Javascript的错还是浏览器的问题——2009年为何显示为109年

作者:dudo 来源:dudo博客 时间:2009-01-11 18:19:00 

在浏览几个网页时,发现有几个网站在显示时间时存在问题,比如今天是2009年1月4日,但是有的网站上却赫然写着今天是109年1月4日(这里有个例子就是中国银行的网站首页)。这是一个奇怪的问题,可看这些网站的代码,大致如下:

var today;   
today = new Date();   
document.write(today.getYear());  

从上面的代码来看并不存在任何问题!但是当我们运行这段代码时却发现,在不同的浏览器中返回的结果并不同:在Internet Explorer中返回的是2009,在Firefox、Chrome等浏览器中返回的是109。由于目前使用Internet Explorer的用户依然占居绝对多数,因为这个问题很难被发现。不过这足以说明IE和其它浏览器对于getYear()的解释并不一致(这也是Internet Explorer的一贯作风),但是问题究竟出现在哪里呢?是浏览器本身的问题还是Javascript出现了问题呢?我们姑且不去讨论这个,我们先来看看getYear()的具体作用:

在非Internet Explorer浏览器中,getYear()函数返回的是1900到1999间的两位十进制数字,比如1999年,返回是99,这和实际年份正好相同;但是如果年份走出了1999,那么就会一个3位的十进制数字,比如2000年,返回的就是100(99+1),2009返回的就是109(99+10);

如何解决这个问题?

很简单,使用getFullYear()这个函数。

在所有的浏览器中,getFullYear()返回的一个四位数的十进制数字。

因此,如果时间不超过9999年,那么就会一直有效。

getYear()和getFullYear()的区别

几点建议:

  1. 使用多个浏览器测试你的网站。这一点已经不用多说了,这里指的多个浏览器不仅仅是不同类别的浏览器,更包括了浏览器的不同版本;

  2. 获得时间使用服务器端还是客户端。在多数情况下,我建议直接在服务器端获得时间然后再输送到用户浏览器,这样不会因为用户机器时间设置不同而出现问题。但是这也存在一个问题,那就是不同时区内的访问者可能看到的是同一个时间。如果你的网站访问者人群相对固定,那么建议直接在服务器端直接获得时间(这不会浪费太多的解析时间)。

标签:浏览器,时间,日历,JavaScript
0
投稿

猜你喜欢

  • asp如何终止浏览器的 CAHCE 页面?

    2010-07-07 12:25:00
  • ASP进阶教程Ⅶ:留言簿设置密码验证

    2008-10-13 09:02:00
  • Javascript:keyCode键盘键码值表

    2008-02-21 13:16:00
  • 三招解决SQL Server数据库权限冲突

    2009-03-16 16:58:00
  • 使用字符串建立查询能加快服务器的解析速度吗?

    2010-07-14 21:03:00
  • 读写xml文件的2个小函数

    2007-08-23 12:59:00
  • mysql 存储过程 使用小结

    2010-10-25 20:02:00
  • Oracle回滚段的概念,用法和规划及问题的解决

    2010-07-26 13:08:00
  • Facebook是如何设计的[译]

    2009-09-17 13:10:00
  • CSS3:文字阴影知多少

    2009-06-28 15:33:00
  • 一个简单的JS显示日期代码

    2009-02-10 12:34:00
  • MySQL数据库本地备份和双机相互备份

    2008-05-27 12:25:00
  • sqlserver 修改列名及表名的sql语句

    2012-07-11 15:58:46
  • 戴着锁链跳舞

    2009-08-20 13:06:00
  • ASP四级连动下拉列表程序段

    2009-07-03 15:33:00
  • 面向站长和网站管理员的Web缓存加速指南[翻译]

    2008-04-22 21:04:00
  • 实用技巧:优化SQL Server数据库查询方法

    2009-02-04 13:46:00
  • Mysql5写中文乱码问题解决

    2007-09-17 12:38:00
  • 如何去除点击链接时出现的虚线框

    2007-12-02 17:38:00
  • ASP代理采集的核心函数代码

    2010-01-02 20:43:00
  • asp之家 网络编程 m.aspxhome.com