2014-12-05 125 views
1

我有两次变量作为字符串 想找到平均时间。请帮我在java中的两个字符串时间的平均时间

inTime = shift.getInTime()+":00"; 
outTime = shift.getOutTime()+":00"; 
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
Date d1=df.parse(inTime); 
Date d2 = df.parse(outTime); 
long date1InMilSec=d1.getTime(); 
long date2InMilSec=d2.getTime(); 
long half =date1InMilSec + ((date2InMilSec - date1InMilSec)/2); 
long minute = (half/(1000 * 60)) % 60; 
long hour = (half/(1000 * 60 * 60)) % 24; 
String time = String.format("%02d:%02d", hour, minute); 
+2

什么不与代码打交道? – Tom 2014-12-05 12:48:20

+0

inTime = 09:30:00 outTime = 15:30:00我得到时间= 07:00:00 – junsid 2014-12-05 12:50:16

+0

我想要12:30:00 – junsid 2014-12-05 12:50:43

回答

3

首先,如果我用你的代码,并设置固定的时间值,然后我得到11:30:00,而不是你07:00:00,所以有可能别的毛病inTimeoutTime

由于我得到11:30:00您的小时和分钟计算可能有问题,但我不会打扰。让我们用新的Date实例来进行转换:

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
Date d1 = df.parse("09:30:00"); 
Date d2 = df.parse("15:30:00"); 
long date1InMilSec = d1.getTime(); 
long date2InMilSec = d2.getTime(); 
long half = date1InMilSec + ((date2InMilSec - date1InMilSec)/2); 
Date meanTime = new Date(half); // new Date instance, instead of own calculation 
String time = df.format(meanTime); 
System.out.println(time); 

此代码打印:

12:30:00 
+0

非常感谢汤姆 – junsid 2014-12-05 13:19:46

1
String inTime = "09:30:00"; 
String outTime = "15:30:00"; 
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); 
Date dateIn = df.parse(inTime); 
Date dateOut = df.parse(outTime); 
long dateInMill = dateIn.getTime(); 
long dateOutMill = dateOut.getTime(); 
long dateMiddleMill = dateInMill + ((dateOutMill - dateInMill)/2); 

Date dateMiddle = new Date(dateMiddleMill); 
System.out.println(df.format(dateMiddle));