java中怎样计算两个时间如:“21:57”和“08:20”相差的分钟数、小时数

解决方案 »

  1.   

    方法一:
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date now = null;
    Date date = null;
    try {
    now = df.parse("2004-03-26 13:31:40");
    date = df.parse("2004-01-02 11:30:24");
    } catch (ParseException e) {
    e.printStackTrace();
    } 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 + "秒");方法二:
    SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date begin = null;
    Date end = null;
    try {
    begin = dfs.parse("2004-01-02 11:30:24");
    end = dfs.parse("2004-03-26 13:31:40");
    } catch (ParseException e) {
    e.printStackTrace();
    } long between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒 long day1 = between / (24 * 3600);
    long hour1 = between % (24 * 3600) / 3600;
    long minute1 = between % 3600 / 60;
    long second1 = between % 60;
    System.out.println("" + day1 + "天" + hour1 + "小时" + minute1 + "分"
    + second1 + "秒");
      

  2.   

    看清楚问题啊,两个时间字符串中只有小时和分,而没有年月日,楼上的方法出现解析错误:java.text.ParseException: Unparseable date: "08:20"
      

  3.   

    你可以把这两个时间转为分,分相减,能后在把分转换为  hh:mm 
      

  4.   

    怎样转为“分”?
    SimpleDateFormat df = new SimpleDateFormat("mm:ss");//是这样写吗