免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1698 | 回复: 6
打印 上一主题 下一主题

[Web] 2006年为何变成106年咯? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-17 09:39 |只看该作者 |倒序浏览
大家有没有注意到 最近很多网站显示年份的都将2006年显示为106咯?
这是啥原因啊?
好象php 和 jsp的网站都有这样的问题,包括www.miibeian.gov.cn 也是的!

论坛徽章:
0
2 [报告]
发表于 2006-01-17 11:14 |只看该作者
哦?看看先

论坛徽章:
0
3 [报告]
发表于 2006-01-17 12:05 |只看该作者

?

what's wrong?
somebody know?

论坛徽章:
0
4 [报告]
发表于 2006-01-18 12:01 |只看该作者
因为它们使用JS显示时间,在Firefox下有问题,原因未知。并不是PHP,JSP的问题。后来,我也不使用那段代码了。

[ 本帖最后由 ideawu 于 2006-1-18 12:02 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-01-18 12:43 |只看该作者
o 了解
原来是这样的问题啊
因为JS代码是在客户端解释的
关于时间的date函数在 Firefox中解释出现异常咯~~
原因不详!~ 可能是firefox的bug~

论坛徽章:
0
6 [报告]
发表于 2006-01-18 20:06 |只看该作者
firefox的bug?

你说反了,  这是我订阅的邮件列表上由diyx(robbiecn[at]gmail.com)写的文章, :


先看一段JS代码


  1. <script language=JavaScript>

  2. today=new Date();
  3. function initArray(){
  4.   this.length=initArray.arguments.length
  5.   for(var i=0;i<this.length;i++)
  6.   this[i+1]=
  7. initArray.arguments[i]  }
  8.   var d=new initArray(
  9.     "星期日",
  10.     "星期一",
  11.     "星期二",
  12.     "星期三",
  13.     "星期四",
  14.     "星期五",
  15.     "星期六");

  16. document.write(
  17.     "<font color=##000000 style='font-size:9pt;font-family: 宋体'>
  18. ",
  19.     today.getYear(),"年",
  20.     today.getMonth()+1,"月",
  21.     today.getDate(),"日",

  22.     d[today.getDay()+1],
  23.     "</font>" );

  24. </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()是正确的,在不同浏览器中都能正确计算。

论坛徽章:
0
7 [报告]
发表于 2006-01-18 22:25 |只看该作者
原帖由 jhsea3do 于 2006-1-18 20:06 发表
因此,为了最大范围的兼容性,使用getFullYear()是正确的,在不同浏览器中都能正确计算。

太谢谢了,终于又可以用那段js代码了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP