思路:通过观察样例的输入输出,输出(即飞行时间)= 【(到达时间-出发时间)+(返回时的出发时间-到达时间)】/2
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class TestOne {
/*测试数据
*
2
17:48:19 21:57:24
11:05:18 15:14:23
17:21:07 00:31:46 (+1)
23:02:41 16:13:20 (+1)
*
* */
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) throws ParseException {
int n = sc.nextInt();
sc.nextLine();
for(int i=0;i<n;i++) {
long t1 = getTime();//第一次a->b 的时间差
long t2 = getTime();//往返时b->a 的时间差
long t = (t1+t2)/2; //两次的时间差相加 / 2
System.out.printf("%02d:%02d:%02d\n",t/3600,t/60%60,t%60);//输出时分秒。%2d表共两位,不足就补0
}
}
private static long getTime() throws ParseException {
String line = sc.nextLine();//输入起飞时间 到达时间
String[] split = line.split(" "); //获取起飞时间、到达时间、间隔天数的数组
SimpleDateFormat sd = new SimpleDateFormat("HH:mm:ss");//日期格式化显示(10:02:03)
Date t1 = sd.parse(split[0]); //将一个字符串类型的日期 转化为上述格式的日期
Date t2 = sd.parse(split[1]);
int day=0;//记录跨越的天数
if(split.length==3) {//存在天数的跨度
day = Integer.parseInt(split[2].substring(2, 3));//包括2不包括3(2、3均表示下标,下标从0开始)
}
return day*24*60*60 + t2.getTime()/1000 - t1.getTime()/1000;//返回往返相差的总秒数。getTime方法返回的是毫秒单位的long型数据。
}
}