日期:2014-05-20  浏览次数:20838 次

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

------解决方案--------------------
一般解法:
Java code

    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());
        
    }

------解决方案--------------------
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 ;
}
}