java中两个字符串时间的平均时间

时间:2014-12-05 12:44:35

标签: 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 个答案:

答案 0 :(得分:3)

首先,如果我使用您的代码并设置固定时间值,那么我会获得11:30:00而不是07:00:00,因此inTime和{{}}可能会出现其他问题{1}}。

由于我得到outTime,你的小时和分钟的计算可能有问题,但我不会打扰它。我们使用新的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);

答案 1 :(得分: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));