1.一个指定的时间,如yyyy-MM-dd HH:mm:ss(2010-06-20 18:30:12)指定时间一般情况下大于等于当前系统时间2.取系统当前时间,格式如SimpleDateFormat("yyyy-MM-dd HH:mm:ss")比如2010-06-20 18:20:02用指定时间 - 当前系统 时间,最后要求得出格式,时:分:秒(05:39:15),如果超过24个小时,天数单独用整数表示
后面的时分秒仍以05:39:15表示。

解决方案 »

  1.   


    package com.Gavin.tools.util;import java.util.Date;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;import com.sun.org.apache.bcel.internal.generic.NEW;/** *//** *//** *//**
     * Title: 日期时间
     * Description: 工具类
     * @author Gavin.lee
     * @date 09-05-4 9-14am
     * @version 1.0
     */
    public class DateUtil {    public static String date2Dispersion(String date_front, String date_back) {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date begin = null;
            Date end = null;
            try {
                begin = df.parse(date_front);
                end = df.parse(date_back);
            } catch (ParseException e) {
                e.printStackTrace();
            }        long between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒
            long day = between / (24 * 3600);//天
            long hour = between % (24 * 3600) / 3600;//小时
            long minute = between % 3600 / 60;//分钟
            long second = between % 60 / 60;//秒        return day + "天" + hour + ":" + minute + ":" + second ;
        }
        
        public static void main(String args[]) {
            System.out.println(DateUtil.date2Dispersion("2004-01-02 11:30:24", "2004-03-26 13:31:40"));
        }
    }
      

  2.   

    有人说用java.util.Calendar这个类时间没有误差,用date可能有
      

  3.   

    使用joda-time库DateTimeFormatter formatter =  DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");DateTime start = formatter.parseDateTime("2010-06-20 18:30:12");
    DateTime end = formatter.parseDateTime("2010-06-20 18:20:02");
    Period period = new Period(start,end);
    使用PeriodFormatter按需要的格式输出
      

  4.   

    这是我写的一个比较麻烦的代码,好点的想不出来,对时间日期方面的没怎么深究,水平有限啊
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;public class Test_date {


    public static void main(String[] args){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    try {
    Date end = sdf.parse("2010.06.27 12:12:12");
    method(end,new Date());
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }

    public static void method(Date d1,Date d2){
    int y1 = d1.getYear();
    int y2 = d2.getYear();
    int m1 = d1.getMonth();
    int m2 = d2.getMonth();
    int day1 = d1.getDate();
    int day2 = d2.getDate();
    int h1 = d1.getHours();
    int h2 = d2.getHours();
    int min1 = d1.getMinutes();
    int min2 = d2.getMinutes();
    int s1 = d1.getSeconds();
    int s2 = d2.getSeconds();
    int y = y1-y2;
    int m = m1-m2;
    int d = day1-day2;
    int h = h1-h2;
    int min = min1-min2;
    int s = s1-s2;
    int day = 0;
    if(s<0){
    min -= 1;
    s += 60;
    }
    if(m<0){
    h -= 1;
    m += 60;
    }
    if(h<0){
    d -= 1;
    h += 24;
    }
    if(y>0){
    day += 365;
    }
    if(m> 0){
    day += 31;
    }
    if(d>0){
    day += d;
    }
    String str = day+"天 "+h+":"+m+":"+s;
    System.out.println(str);
    }
    }