2009年显示109年?到底那里出错了?
这几天在做学校里相关的网站,所以参考了很多政府和其他学校的网站,发现一个比较大的问题,在Firefox里面很多时间都是显示错误的,现在是2009年,可是显示的是109年。。。这是为什么,为什么很多国家级的职能部门有这个错误呢?下面是我发现的几个:
国家发改委

查看源代码看一下,大部分都是用JS从客户端取时间,获取年的代码形式大部分如下:
var curTime = new Date(); document.write(curTime.getYear());
很明显,问题肯定出getYear()这个函数上,查下相关资料
http://www.w3schools.com/jsref/jsref_getYear.asp
Definition and Usage
The getYear() method returns the year, as a two-digit OR a three/four-digit number.
The value returned by getYear() is not always four digits. For years between 1900 and 1999 the getYear() method returns only two digits.
For other years (before 1900 and after 1999) the return is browsers dependant:
Internet Explorer:
* Returns four digits for years before 1900 and after 1999.
Firefox:
* Returns a value less than 0 for years before 1900. For example, the year 1800 returns -100.
* Returns a value 100 or greater for years greater than or equal to 2000. For example, the year 2008 returns 108.
Syntax
dateObject.getYear()
Tips and Notes
Note: This method is always used in conjunction with a Date object.
Important: The getYear() method should no longer be used. Use the getFullYear() method instead!!
翻译翻译就是:
getYear()函数返回的是两位,三位或者四位数字,在1900-1999年之间返回的是两位(00-99),而其他的年份则与浏览器有关。
IE:在1900-1999的其他年份返回四位数字(也就是说getYear在IE里面显示是正常的:)
Firefox:在1900年之前返回的是一个负数,1800年返回的是-100,1999年之后返回的是大于等于100的三位数,比如2000年返回的是99+1=100,2009年就是99+10=109!!!
109年就这样错误的显示在我们面前了!!
文档也给出了正确的做法,说不应该用getYear,而是应该用getFullYear这个函数,问题就解决了。



嗯,明白了
这些做网站的人纯属SB,鉴定完毕
我一般都是用下面这个方法动态显示时间,分钟,秒什么都出来了:
window.onload=function (){
setInterval(”document.getElementById(’time’).innerHTML=’现在时间是:’+new Date().toLocaleString()+’ 星期’+'日一二三四五六’.charAt(new Date().getDay());”,1000);
}
这个时间应该要显示Server端的会比较在理吧,显示客户端的时间没什么意义似乎
应该是显示客户端的更合理些,因为世界上不同时区的人并不关注服务器的时间,而关系的是自己时区的时间,这样就能满足所有时区的用户了…
哈哈,那可不对,关心自己的时间还用看网站了。。。自己的电脑上又不是没有。。。如果是要关注时区问题,那么一般都会让用户选择自己的时区的,现在的國際化的网站都是这么做的
很多人有手机但是还是会戴手表,网站提供时间只是方面罢了~
偶然看到一些很喜欢的词