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!提问:为什么?

解决方案 »

  1.   

    我机器上的运行结果: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很正常阿
      

  2.   

    我的JDK 版本1.5.0_09
    你的呢?
    据说,在1.5.0_08 的版本中运行正确
      

  3.   

    判断此 calendar1 表示的时间是否在指定 calendar2 表示的时间之前,返回判断结果。按照你显示时间来看,这个是false
      

  4.   

    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
      

  5.   

    我用sun jdk1.4.1确实如楼主所言
    无法解释
    建议多用几个jdk版本试一试,包括非sun公司的版本
    有可能是个bug
      

  6.   

    把class文件反编译一下看看,应该是有bug
      

  7.   

    Mon Jan 01 08:00:00 CST 1900 至 Mon Jan 01 08:05:51 CST 1900 这段时间内,都给加了5分52 秒!其他时间段没有任何问题!!!
    我晕死
      

  8.   

    建议所有测试的人都把结果和JDK版本号附上,我想看看有多少版本有问题fansy007(范特西):
    你没问题的JDK版本是多少?
      

  9.   

    twenty_three(孙超):
    Java 中规定,在1970-1-1 00:00:00 之前的时间都是负值而且如果两个时间都不是在我上面说过的时间段之外的话,一切正常。
      

  10.   

    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)
      

  11.   

    估计应该是JDK 的bug
    现在在Time 上面,推荐使用joda time,别使用JDK内部的类了