Java 的Calendar 中一个极其古怪的问题

awded 2006-10-26 01:20:35
GregorianCalendar calendar = new GregorianCalendar(1900, 0, 1, 8, 5, 51);
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
System.out.println(calendar.getTime());

GregorianCalendar calendar2 = new GregorianCalendar(1900, 0, 1, 8, 5, 52);
System.out.println(calendar2.get(Calendar.MINUTE));
System.out.println(calendar2.get(Calendar.SECOND));
System.out.println(calendar2.getTime());

if (calendar.before(calendar2)) {
System.out.println("pass");
} else {
System.out.println("damn it error!");
}

最后结果:
11
43
Mon Jan 01 08:11:43 CST 1900
5
52
Mon Jan 01 08:05:52 CST 1900
damn it error!

提问:为什么?
...全文
425 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
awded 2006-10-26
  • 打赏
  • 举报
回复
估计应该是JDK 的bug
现在在Time 上面,推荐使用joda time,别使用JDK内部的类了
fansy007 2006-10-26
  • 打赏
  • 举报
回复
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
awded 2006-10-26
  • 打赏
  • 举报
回复
twenty_three(孙超):
Java 中规定,在1970-1-1 00:00:00 之前的时间都是负值

而且如果两个时间都不是在我上面说过的时间段之外的话,一切正常。
twenty_three 2006-10-26
  • 打赏
  • 举报
回复
时间的问题,楼主设置的时间,取得的毫秒数为负值,所以绝对值大的反而在前面了
awded 2006-10-26
  • 打赏
  • 举报
回复
建议所有测试的人都把结果和JDK版本号附上,我想看看有多少版本有问题

fansy007(范特西):
你没问题的JDK版本是多少?
awded 2006-10-26
  • 打赏
  • 举报
回复
Mon Jan 01 08:00:00 CST 1900 至 Mon Jan 01 08:05:51 CST 1900 这段时间内,都给加了5分52 秒!其他时间段没有任何问题!!!
我晕死
twenty_three 2006-10-26
  • 打赏
  • 举报
回复
学习
gzpoplar 2006-10-26
  • 打赏
  • 举报
回复
把class文件反编译一下看看,应该是有bug
ustbzhangwei 2006-10-26
  • 打赏
  • 举报
回复
我用sun jdk1.4.1确实如楼主所言
无法解释
建议多用几个jdk版本试一试,包括非sun公司的版本
有可能是个bug
coastcdl 2006-10-26
  • 打赏
  • 举报
回复
compile:
run:
11
43
Mon Jan 01 08:11:43 CST 1900
5
52
Mon Jan 01 08:05:52 CST 1900
damn it error!
生成成功(总时间:0 秒)

java version "1.5.0_08"
同问,为什么输出这个时间?
11
43
Mon Jan 01 08:11:43 CST 1900
混沌骑士 2006-10-26
  • 打赏
  • 举报
回复
判断此 calendar1 表示的时间是否在指定 calendar2 表示的时间之前,返回判断结果。

按照你显示时间来看,这个是false
awded 2006-10-26
  • 打赏
  • 举报
回复
1.5.0_04 和1.5.0_07 上似乎也都有这个问题
awded 2006-10-26
  • 打赏
  • 举报
回复
我的JDK 版本1.5.0_09
你的呢?
据说,在1.5.0_08 的版本中运行正确
fansy007 2006-10-26
  • 打赏
  • 举报
回复
我机器上的运行结果:

5
51
Mon Jan 01 08:05:51 GMT+08:00 1900
5
52
Mon Jan 01 08:05:52 GMT+08:00 1900
pass

很正常阿

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧