Time类中,hh:mm:ss显示,ss超出了范围还可以正确运行,有兴趣的朋友也可以测试下.
import java.sql.Time;public class Test {
public static void main(String[] args) {
Time t1=new Time(0);
Time t2=new Time(0);

t1=t1.valueOf("00:00:00");
t2=t2.valueOf("00:02:52");
//t2=t2.valueOf("00:02:5552");  //秒超出60,可以输出
//t2=t2.valueOf("00:02:92");    //秒超出60,可以输出
//t2=t2.valueOf("00:02:ff");    //秒为字每,抛出不是数字异常

Long l1=t1.getTime();
Long l2=t2.getTime();
Long l3=(l2-l1)/1000;

System.out.println(t1);
System.out.println(t2);
System.out.println(l3+"秒");
}
}

解决方案 »

  1.   

    晕  JDK很智能  它会自动帮你算上   
    比如 //t2=t2.valueOf("00:02:92");    //秒超出60,可以输出输出的应该是  00:03:32
      

  2.   

    //t2=t2.valueOf("00:02:ff");    //秒为字每,抛出不是数字异常 ff 16进制???说不通呀等高人解答这个。我没试过,学习一下
      

  3.   

    看jdk的源码就会知道,Time.valueOf最终是调用new Time(hour, minute, second)来生成一个Time对象
    而这个方法是被Deprecated了的,估计以后也不会更新了,所以是不是Bug关系都不大了吧;当然,最终使用这个second的方法是sun.util.calendar.CalendarDate.setTimeOfDay(int arg0, int arg1, int arg2, int arg3)也许以后会按照你的想法修正也说不准,呵呵
    不过如果要通过格式日期字符串生成Date对象,还是使用DateFormat来做吧
      

  4.   

    这个不算BUG。。 是人家考虑过的
      

  5.   

    我试了一下
    可能是java可以自动进位的原因~~
    后面的数过大,可以自动给高位补上相应得值~~
      

  6.   

    日期与字符串的转换现在都是建议使用SimpleDateFormat的,它里面有setLenient方法来控制是否允许自动进位。
      

  7.   

     NO BUG   
    鉴定完毕