请教高手:String olddate =2010-09-23 10:23:12;
String newdate = 2010-11-12 11:43:42;我现在想知道这两个时间相隔的时间 delta_t?以及他们相隔的时间delta_t 与 1天10时34分32秒的大小?有相关的函数可以使用吗,或者说高手们有相关的函数或者是类可以使用吗?

解决方案 »

  1.   

    提供给楼主思路,可以先把日期类型转换成日期long类型,后面的减去前面,然后在转成日期格式
      

  2.   

    感谢3楼高手,我也是这么样想的。
    但是,我按照下面的方式:
    SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date1 = bartDateFormat.parse(olddate);
    Date date2 = bartDateFormat.parse(newdate);
    Long compareresult = date2.getTime() - date1.getTime();变成Long后,我不知道怎样才能将Long变成Date,甚至变成String?
      

  3.   

    构造方法, new Date(long date) 
      

  4.   

    用 Calendar类吧 日期运算什么的很方便
      

  5.   


       SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
       java.util.Date now = df.parse("2004-03-26 13:31:40"); 
       java.util.Date date=df.parse("2004-01-02 11:30:24"); 
       long l=now.getTime()-date.getTime(); 
       long day=l/(24*60*60*1000); 
       long hour=(l/(60*60*1000)-day*24); 
       long min=((l/(60*1000))-day*24*60-hour*60); 
       long s=(l/1000-day*24*60*60-hour*60*60-min*60); 
       System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒"); 
      

  6.   

    用Calendar的compareTo比较两个日期得出毫秒数。1天10时34分32秒的大小 换成毫秒表示long compareTime = 24*60*60*1000 + 10*60*60*1000 + 34*60*1000 + 32*1000;比较两个long的值得出大小
      

  7.   

     long day=l/(24*60*60*1000); 
     long hour=(l/(60*60*1000)-day*24); 
     long min=((l/(60*1000))-day*24*60-hour*60); 
     long s=(l/1000-day*24*60*60-hour*60*60-min*60); 
     System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒"); 
      

  8.   

    楼上的方法都很对  但是在java api里面有现成的方法大家为何不用呢getTime
    public long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 返回:
    自 1970 年 1 月 1 日 00:00:00 GMT 以来此日期表示的毫秒数。
    这方法多好啊  为什么不用列? 
    这个方法返回long java里面的long类型绝对够你用
      

  9.   

    大家都在间接的用啊,因为不管用什么源都是Date
      

  10.   

    我将yyyy-MM-dd HH:mm:ss格式字符串变为Date的函数:
    public static Date strToDateLong(String strDate)
    {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = formatter.parse(strDate, pos);
    return strtodate;
    }将HH:MM:ss变为Date的函数:public static Date strToTime(String strDate)
    {

    SimpleDateFormat formatter = new SimpleDateFormat("HH:MM:ss");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = formatter.parse(strDate, pos);
    return strtodate;
    }请高手指教,我的strToTime函数是否有问题,应该怎样改正?
      

  11.   

    public static Date strToTime(String strDate)
    {SimpleDateFormat formatter = new SimpleDateFormat("HH:MM:ss");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = formatter.parse(strDate, pos);
    return strtodate;
    }我使用这个函数将23:00:00变为date,在上面的函数中,执行strtodate.getTime();得到的结果为什么是:-2624400000
      

  12.   

    calendar类里提供了方法,自己看API吧,
      

  13.   

    高手们,指点一下吧,我没有积分了,不能再发帖了。
    我现在就是想在一个已知的时间上,加上一个偏移量:
    如:yyyy-MM-dd HH:mm:ss + 12个小时,得到的结果是多少,
      

  14.   

    楼主看看calendar的文档
    http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/util/Calendar.html假设已知时间=2010-12-07 12:35:42
    Calendar cal = getInstance();
    cal.set(2010, 12, 7, 12, 35, 42);
    //+12小时
    cal.add(Calendar.HOUR_OF_DAY, 12);
    //12小时后的日期
    Date dte12 = cal.getTime();
      

  15.   

    Date d = new Date(long型参数);
      

  16.   

    //time=20101207134000 timeToAdd=12(小时)
    int year = Integer.parseInt(time.substring(0, 4));
    int month = Integer.parseInt(time.substring(4, 6));
    int date = Integer.parseInt(time.substring(6, 8));
    int hour = Integer.parseInt(time.substring(8, 10));
    int min = Integer.parseInt(time.substring(10, 12));
    int sec = Integer.parseInt(time.substring(12, 14)); int minAdd = Integer.parseInt(timeToAdd); Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month - 1);
    c.set(Calendar.DATE, date);
    c.set(Calendar.HOUR_OF_DAY, hour);
    c.set(Calendar.MINUTE, min);
    c.set(Calendar.SECOND, sec); Long times = c.getTimeInMillis() + minAdd * 60*60*1000; SimpleDateFormat form = new SimpleDateFormat("yyyyMMddHHmmss");
    Date endTime = new Date(times);
    return form.format(endTime);