比如说 String s1 = "4:15:58";
       String s2 = "4:24:23";
如何才能求这两个时间的和?求帮助~!

解决方案 »

  1.   

    两个值必须都是String吗?这样比较麻烦啊。
    用:把String给分成3部分,然后没部分相加行不行啊
      

  2.   

    将他们分别都转换成long型的毫秒数,然后相加,把结果放入Date或者Calendar,最后用DateFormat转换回String
      

  3.   


    public static void main(String[] args) throws ParseException {
    String s1 = "4:15:58";
    String s2 = "4:24:23";

    SimpleDateFormat sdf = new SimpleDateFormat("H:mm:ss");
    Date d1 = sdf.parse(s1);
    Date d2 = sdf.parse(s2);


    Calendar c = Calendar.getInstance();
    c.setTime(d1);

    c.add(Calendar.HOUR, d2.getHours());
    c.add(Calendar.MINUTE, d2.getMinutes());
    c.add(Calendar.SECOND, d2.getSeconds());

    System.out.println(sdf.format(c.getTime()));
    }
      

  4.   

    一般解法: public static void main(String[] args) {

    String s1 = "4:15:58";
    String s2 = "4:24:23";

    String[] t1 = s1.split(":");
    String[] t2 = s2.split(":");

    int carry = 0;
    int[] res = new int[3];
    for(int i=2;i>=0;i--)
    {
    int sum = Integer.valueOf(t1[i])+Integer.valueOf(t2[i]) + carry;

    if(i!=0)
    {
    carry = sum/60;
    sum %= 60;
    }

    res[i] = sum;
    }

    StringBuilder sb = new StringBuilder();
    for(int i=0;i<3;i++)
    {
    sb.append(res[i]);
    if(i!=2)
    sb.append(":");
    }

    System.out.println(sb.toString());

    }
      

  5.   

    转换成毫秒数相加,再转换成string类型
      

  6.   


    Calendar 计算还会计算出大于24小时吗?我没有听过。
      

  7.   

    时间的本质就是long类型的,可以用setTime()方法转成Date类型,再转成Calendar类型,相反用getTime()方法可以转回去。
    如果是String可以用
    SimpleDateFormat类转成Date,Date再转long,这样就可以计算了。
    手机上的没法给你弄图片,代码也不好写,也不知你看懂了没有,见谅!
      

  8.   

    public class AddDate { public String addTwoDate(String date1 , String date2){
    String  rs = "";//定义秒存储
    String  rm = "" ; //定义分存储
    String  rh = "" ;//定义时存贮
    String[] dt1 = date1.split(":") ;
    String[] dt2 = date2.split(":") ;
    //时间的小时数位
    int h1 = Integer.parseInt(dt1[0]) ;
    int h2 = Integer.parseInt(dt2[0]) ;
    //时间的分数位
    int m1 = Integer.parseInt(dt1[1]) ;
    int m2 = Integer.parseInt(dt2[1]) ;
    //时间的秒数位
    int s1 = Integer.parseInt(dt1[2]) ;
    int s2 = Integer.parseInt(dt2[2]) ;
    //先对秒进行相加
    if((s1+s2) >=60 ){
    m1=m1+1 ;//加的数值大于60进位
    rs = (s1+s2-60)+"" ;//求的的秒位数值
    if(Integer.parseInt(rs) < 10){
    rs = "0"+rs ;//进行补零操作
    }
    }else if((s1+s2) > 9){//对于是足够两位数的进行直接显示
    rs = (s1+s2)+"" ;
    }else{//不够两位的数字进行补领操作
    rs = "0"+(s1+s2)+"";
    }
    //在对分进行相加
    if((m1+m2) >=60 ){
    h1=h1+1 ;//加的数值大于60进位
    rm = (m1+m2-60)+"" ;//求的的秒位数值
    if(Integer.parseInt(rm) < 10){//进行补零操作
    rm="0"+rm;
    }
    }else if((m1+m2) > 9){//对于是足够两位数的进行直接显示
    rm = (m1+m2)+"" ;
    }else{//不够两位的数字进行补领操作
    rm = "0"+(m1+m2)+"";
    }
    //在对时进行相加
    if((h1+h2)>24){//表示相加的天数已经大于一天
    rh = (h1+h2)+"" ;
    }else if((h1+h2)>9){//进行补领操作
    rh = (h1+h2)+"" ;
    }else{
    rh = (h1+h2)+"" ; 
    }
    return  rh+":"+rm+":"+rs ;
    }
    /**
     * 将时间类型转化为字符串格式
     */
    public String Date2String(Date descDate , String pattern){
    SimpleDateFormat format = new SimpleDateFormat(pattern) ;
    return format.format(descDate) ;
    }

    /**
     * 将string类型转化为日期格式
     * @param descDate
     * @return
     */
    public Date String2Date(String descDate , String pattern){
    SimpleDateFormat format = new SimpleDateFormat(pattern) ;
    Date date = null ;
    try {
    date =  format.parse(descDate) ;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return date ;
    }
    }
      

  9.   

    如果时间这么给
    String s1 = "11:15:58";
    String s2 = "20:24:23";
    这个计算结果好像不正确