比如说 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 ;
}
}