- 论坛徽章:
- 0
|
firefox的bug?
你说反了, 这是我订阅的邮件列表上由diyx(robbiecn[at]gmail.com)写的文章, :
先看一段JS代码
- <script language=JavaScript>
- today=new Date();
- function initArray(){
- this.length=initArray.arguments.length
- for(var i=0;i<this.length;i++)
- this[i+1]=
- initArray.arguments[i] }
- var d=new initArray(
- "星期日",
- "星期一",
- "星期二",
- "星期三",
- "星期四",
- "星期五",
- "星期六");
- document.write(
- "<font color=##000000 style='font-size:9pt;font-family: 宋体'>
- ",
- today.getYear(),"年",
- today.getMonth()+1,"月",
- today.getDate(),"日",
- d[today.getDay()+1],
- "</font>" );
- </script>
复制代码
这段代码在Microsoft Internet Explorer中执行正常,输出2005年10月14日星期五,但在Mozilla Firefox浏览器中却显示为105年10月14日星期五.这个问题在其它许多网站上都存在,我觉得问题的关键在于:浏览器对于JS代码解释的差异性.
IE中:
today=new Date();
today.getYear()返回的是绝对的公元纪年,2005
Firefox中:
today=new Date();
today.getYear()返回的是相对绝对的年份,年份相对于1900,因为今年是2005,两者相减是105.
这个问题的根源在于2000年问题,以前年份的表示使用2位数字,我查看了
ECMAScript Language Specification的规范,
它是这么描述的Date对象:
Date.prototype.getYear ( )
NOTE
The getFullYear method is preferred for nearly all purposes, because it
avoids the "year 2000
problem."
When the getYear method is called with no arguments the following steps
are taken:
1. Let t be this time value.
2. If t is NaN, return NaN.
3. Return YearFromTime(LocalTime(t)) − 1900.
因此,为了最大范围的兼容性,使用getFullYear()是正确的,在不同浏览器中都能正确计算。 |
|