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年,那么就会一直有效。
几点建议:
使用多个浏览器测试你的网站。这一点已经不用多说了,这里指的多个浏览器不仅仅是不同类别的浏览器,更包括了浏览器的不同版本;
获得时间使用服务器端还是客户端。在多数情况下,我建议直接在服务器端获得时间然后再输送到用户浏览器,这样不会因为用户机器时间设置不同而出现问题。但是这也存在一个问题,那就是不同时区内的访问者可能看到的是同一个时间。如果你的网站访问者人群相对固定,那么建议直接在服务器端直接获得时间(这不会浪费太多的解析时间)。


猜你喜欢
- 最近几天,学习python3的对FTP操作,做下总结!!!!1.FTP链接这样写的好处就是如果报错,很快就能找到错在哪里,方便找到问题。2.
- 使用py时可能需要连续运行多条shell 命令1.# coding: UTF-8import sysreload(sys)sys.setde
- 基本概念数字图像定义对于一幅图像,我们可以将其放入坐标系中,这里取图像左上定点为坐标原点,x 轴向右,和笛卡尔坐标系x轴相同;y 轴向下,和
- 1.’%.2f’%f该方法会进行四舍五入代码如下所示:f = 2.3456789print('
- Python jieba分词如何添加自定义词和去除不需要长尾词通过如下代码,读取一个txt的高频词汇:# 找到高频词汇 &nb
- 一:工具准备Anaconda:是一个开源的Python发行版本,其中包含了conda、Python等180多个科学包及其依赖项。【Anaco
- 本文为大家分享了mysql 8.0.15 winx64压缩包安装配置方法,供大家参考,具体内容如下1、在官网下载压缩包2、解压缩包3、增加配
- 本文实例讲述了php版银联支付接口开发的方法。分享给大家供大家参考,具体如下:支付接口现在有第三方的支付接口也有银行的支付接口。这里就来介绍
- 1. 通过windows attrib 命令获取文件隐藏属性Syntax ATT
- 首先,adb实现对设备的reboot命令是:adb reboot . 但是如果是两台/多台设备的时候,需要声明serial number:
- 在网络设计领域关于Eye-Tracking的研究十分火爆,但是如何把这些研究结果转变为具体可行的设计来运作依旧是个难点。以下就是一些来自于E
- 本文实例讲述了PHP商品秒杀问题解决方案。分享给大家供大家参考,具体如下:引言假设num是存储在数据库中的字段,保存了被秒杀产品的剩余数量。
- 基于Bootstrap jQuery.validate Form表单验证实践项目结构 :github 上源码地址:https://githu
- 不是炒冷饭,我添加了很多新的功能哦演示地址: xwinhtcdemo.htmCSS: global.cssHTC: xwin.htc特点:1
- inet_pton是一个IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换,而且inet_pton和inet_nto
- golang的字符有如下两种:一种是 uint8['ju:nɪt] 类型叫做 byte 型,代表了 ASCII 码的一个字符。另一种
- 本文实例讲述了Python实现去除列表中重复元素的方法。分享给大家供大家参考,具体如下:这里一共使用了四种方法来去除列表中的重复元素,下面是
- 一 引入jwtjwt用户身份验证go get github.com/dgrijalva/jwt-go二 框架中引入jwtimport (&q
- 本文实例讲述了Python装饰器用法与知识点。分享给大家供大家参考,具体如下:(1)装饰器含参数,被装饰函数不含(含)参数实例代码如下:im
- 本文实例讲述了thinkPHP引入类的方法。分享给大家供大家参考,具体如下:这里以发送邮件类phpmailer为例1.将核心文件放入ORG目