哪位大虾给我个求时间差的算法代码:     时间格式如: 12:08:34    13:09:40  没有年月日  只需要求出他们的差值     时间是字符串类型,计算的时候需要转化成int类型.
                              谢谢 !!!!!

解决方案 »

  1.   

    先转化为Date类型,long a = d1.getTime();
    long b = d2.getTime();
    System.out.println(b-a);
    相减得到相差的毫秒数
      

  2.   


    import java.text.SimpleDateFormat;
    import java.util.Date;public class TestDate {    public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");        try {
                Date date1 = sdf.parse("12:08:34");
                Date date2 = sdf.parse("13:09:40");            System.out.println((date2.getTime() - date1.getTime()));//毫秒数
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }时间类型本质是一个1970年1月1日开始的毫秒数,是long型值,计算都用getTime取得这个long值来计算
    要输出的话用simpledateformat把date型格式化为String型就可以了
    如年月日时分秒输出就是System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date()));
      

  3.   


    import java.util.Date;public class TestDate {    public static void main(String[] args) {
            try {
                String dateStr1 = "12:08:34";
                String dateStr2 = "13:09:40";
                
                System.out.println(getDate(dateStr2).getTime() - getDate(dateStr1).getTime());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }    private static Date getDate(String dateStr) {
            String[] dateHMS = dateStr.split(":");
            return new Date(Integer.valueOf(dateHMS[2]) * 1000 + Integer.valueOf(dateHMS[1]) * 60
                    * 1000 + (Integer.valueOf(dateHMS[0]) - 8) * 60 * 60 * 1000);
        }
      

  4.   

    有没有不用到
    import java.text.SimpleDateFormat;
    import java.util.Date;
    类的, 就用算术运算法 来解决这个问题的代码我有一个相加的代码 大家可以参考一下!
    public static String AddTime(String time1, String time2)
        throws NumberFormatException {
       if (time1.indexOf(":") < 0 || time2.indexOf(":") < 0) {
       throw new NumberFormatException("Time   Format   Error!");
       }
       String[] time1s = time1.split(":");
       String[] time2s = time2.split(":");
       String result = "";
       try {
        result = Integer.toString(Integer.parseInt(time1s[0])
          + Integer.parseInt(time2s[0])
          + (Integer.parseInt(time1s[1]) + Integer
            .parseInt(time2s[1])) / 60);
        result += ":"
          + Integer.toString((Integer.parseInt(time1s[1])
          + Integer.parseInt(time2s[1])
          + (Integer.parseInt(time1s[2]) + Integer
            .parseInt(time2s[2])) / 60)%60);
        result += ":"
          + Integer.toString((Integer.parseInt(time1s[2])
           +Integer.parseInt(time2s[2]))%60);
       } catch (NumberFormatException exx) {
       throw new NumberFormatException("Time Format Error!");
       }
       return result;
    }
      

  5.   


    mport java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class Time {    public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
            long DAY=24*60*60*1000;
            try {
                Date date1 = sdf.parse("12:08:34");
                Date date2 = sdf.parse("1300:09:40");         
                long between = date2.getTime() - date1.getTime();//毫秒数
                long day=between/DAY;
                long hour=(between/(60*60*1000)-day*24);
                long min=((between/(60*1000))-day*24*60-hour*60);
                long s=(between/1000-day*24*60*60-hour*60*60-min*60);
                System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
      

  6.   

    7楼我写的1000小时的时候出错,不好意思,修正:import java.util.Date;public class TestDate {    public static void main(String[] args) {
            try {
                String dateStr1 = "12:08:34";
                String dateStr2 = "1000:09:40";            Date date1 = getDate(dateStr1);
                Date date2 = getDate(dateStr2);            System.out.println(date2.getTime() - date1.getTime());//毫秒数        } catch (Exception e) {
                e.printStackTrace();
            }
        }    private static Date getDate(String dateStr) {
            String[] dateHMS = dateStr.split(":");
            long h = (Long.valueOf(dateHMS[0]) - 8) * 60 * 60 * 1000;
            long m = Integer.valueOf(dateHMS[1]) * 60 * 1000;
            long s = Integer.valueOf(dateHMS[2]) * 1000;        return new Date(h + m + s);
        }
    }
      

  7.   

    String[] time1 = "12:08:34".split(":");
    String[] time2 = "13:09:40".split(":");
    int hour = Integer.parse(time2[0]) - Integer.parse(time1[0]);
    int min =  Integer.parse(time2[1]) - Integer.parse(time1[1]);
    int second = Integer.parse(time2[2]) - Integer.parse(time1[2]);long result = hour * 3600 + min * 60 + second;
      

  8.   

    logi22大哥  问个很菜的问题  怎么样把  (date2.getTime() - date1.getTime()) 转化成StringtoString ?      谢谢
      

  9.   

    logi22 大哥报错了 :java.lang.Error: Unresolved compilation problems: 
    The operator - is undefined for the argument type(s) Long, int
    The operator * is undefined for the argument type(s) Integer, int
    The operator * is undefined for the argument type(s) Integer, int at com.tienon.util.time.TimeDec.getDate(TimeDec.java:26)
    at com.tienon.util.time.TimeDec.main(TimeDec.java:14)
    Exception in thread "main" 
    这段有错!        long h = (Long.valueOf(dateHMS[0])-8)*60*60*1000 ;
            long m = Integer.valueOf(dateHMS[1]) * 60 * 1000;
            long s = Integer.valueOf(dateHMS[2]) * 1000;     
            我用的是JDK 1.4 是不是这个问题引起的
      

  10.   

    用simpledateformat把date型格式化为String型就可以了 long dateMs = date2.getTime() - date1.getTime();
    Date date = new Date(dateMs);
    System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(date));
      

  11.   

    错误信息是Long和int之间的-法,Integer和int之间的*法不支持
    应该是jdk版本的问题,1.5好像添加了对基本类型的自动转换,建议你更新jdk1.5,我这里1.5没有问题的
    或者自己把每个int都先转成long再计算
      

  12.   

    最好不用long 类型   , 用int 类型将 '小时','秒','分钟' 位上的数字相减 只是注意遇到 60 进位就行
      

  13.   

    不知道这样行不行
    public static String timeDiff(String time1, String time2){
    try {
    String[] t1 = time1.split(":");
    String[] t2 = time2.split(":");
    int a = (Integer.parseInt(t1[2]) - Integer.parseInt(t2[2]));
    int b = (Integer.parseInt(t1[1]) - Integer.parseInt(t2[1]));
    int c = (Integer.parseInt(t1[0]) - Integer.parseInt(t2[0]));
    if (a < 0) {
    a = a + 60;
    b = b - 1;
    }
    if (b < 0) {
    b = b + 60;
    c = c - 1;
    }
    return c + ":" + b + ":" + a;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }
      

  14.   

       这样行: 
         String time1 = "14:08:24" ;  
          String time2 = "13:07:23" ;  这样就不行了     String time1 = "15:08:24" ;  
          String time2 = "13:18:43" ;
      

  15.   

    不好意思好像可以谢谢你哈   也多谢  logi22 
      

  16.   

    这样:public static String timeDiff(String time1, String time2){
    try {
    NumberFormat nf = NumberFormat.getInstance();
    String[] t1 = time1.split(":");
    String[] t2 = time2.split(":");
    int a = (nf.parse(t1[2]).intValue()- nf.parse(t2[2]).intValue());
    int b = (nf.parse(t1[1]).intValue() - nf.parse(t2[1]).intValue());
    int c = (nf.parse(t1[0]).intValue() - nf.parse(t2[0]).intValue());
    if (a < 0) {
    a = a + 60;
    b = b - 1;
    }
    if (b < 0) {
    b = b + 60;
    c = c - 1;
    }
    return c + ":" + b + ":" + a;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }
      

  17.   

    import java.util.Calendar;public class testtime {
    public testtime() {
    String t1[] = "12:08:34".split(":");
    String t2[] = "13:09:40".split(":"); Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance(); c1.set(Calendar.HOUR_OF_DAY, Integer.parseInt(t1[0]));
    c1.set(Calendar.MINUTE, Integer.parseInt(t1[1]));
    c1.set(Calendar.SECOND, Integer.parseInt(t1[2])); c2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(t2[0]));
    c2.set(Calendar.MINUTE, Integer.parseInt(t2[1]));
    c2.set(Calendar.SECOND, Integer.parseInt(t2[2])); System.out.println((c2.getTime().getTime() - c1.getTime().getTime()) / 1000);
    } public static void main(String[] args) {
    new testtime();
    }
    }