当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JavaScript教程:网页时间问题

Javascript
javascript 动态数据下的锚点错位问题解决方法
jQuery 动画基础教程
jQuery 操作XML入门
ASP SQL防注入的方法
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
jquery 插件 任意位置浮动固定层
JavaScript 检测浏览器和操作系统的脚本
不要小看注释掉的JS 引起的安全问题
js实现的验证,学习用js控制td
javascript iframe中打开文件,并检测iframe存在否
Javascript typeof 用法
Javascript valueOf 使用方法
extjs form textfield的隐藏方法
extjs grid取到数据而不显示的解决
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
My Desktop :) 桌面式代码
javascript 双击文本框编辑功能代码
不用写JS也能使用EXTJS视频演示
js 提取class相同的节点集合
js Li来实现的效果

Javascript 中的 JavaScript教程:网页时间问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 483 ::
收藏到网摘: n/a

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

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