我这样写,得的结果不对呀??
import java.util.Date;public class SnopTime

    public static void main(String[] args)
    {
        Date date1=new Date(2003,3,6,13,24);
        Date date2=new Date(2003,3,6,9,34);
        long a1=date1.getTime();
        long a2=date2.getTime();
        Date date3=new Date();
        long a3=(a1-a2)/1000;
        date3.setTime(a3);
  
        System.out.println(date3.toString());
    }
}
得到结果:
Thu Jan 01 08:00:13 CST 1970本来结果应是3小时50分呀?

解决方案 »

  1.   

    ...//以上相同
    long a3 = (a1-a2)/1000;
    int nDay = a3/(24*60*60);
    int nHour = (a3-nDay*24*60*60)/(60*60);
    int nMinute = (a3-nDay*24*60*60-nHour*60*60)/60;
    int nSecond = a3-nDay*24*60*60-nHour*60*60-nMinute*60;
    System.out.println("间隔时间:"+nDay+"天"+nHour+"小时"+nMinute+"分"+nSecond+"秒");
      

  2.   

    要是还要计算相差里有年,月,怎办
    比如:
    Date date1=new Date(2003,3,6,13,24);
    Date date2=new Date(1999,3,6,9,34);那怎样计算呀,好像每个月,每年的天数不同哟.(有的月有31,有的只有30,28,29呀,还有闰年之类的东东,这种方法行吗??)谁能写一个能计算到相差有几年以上的时间差呀??
      

  3.   

    去java的日历类找
    java.util.Calendar
      

  4.   

    为什么都爱用Date,而不用Calendar呢?
    与日历相关的算法挺复杂的,找个日历程序瞧瞧吧。
      

  5.   

    下面是一个闰年的算法例子,但不是JAVA中的,希望对你有一点帮助!
    integer li_Month //月
    integer li_Year //年
    boolean lb_Leap //閏年

    li_Month = Month(ud_date)
    li_Year = Year(ud_date)

    If (Mod(li_Year, 4) = 0 and Mod(li_Year, 100) <> 0) or (Mod(li_Year, 400) = 0) Then
    lb_Leap = True
    Else
    lb_Leap = False
    End If

    Choose Case li_Month
    Case 1, 3, 5, 7, 8, 10, 12
    Return 31
    Case 2
    If lb_Leap = true then
    Return 29
    Else
    Return 28
    End If
    Case Else
    Return 30
    End Choose
      

  6.   

    用Calendar怎样实现上述的时间差呀?
      

  7.   

    Calendar只能算到离某个时间多久是什么时间,好像算不了两个时间的时间差