日子计算问题(2013年校赛决赛)
题目描述
计算两个日期间(格式:y年m月d日)相隔了多少天.
输入
输入包含多组测试数据,以判断输入到达文件尾(EOF)终止程序。 每个测试样例包含6个整数:y1,m1,d1,y2,m2,d2。分别表示两个日期的年月日( 0 < y1,y2 <= 10^9),每个整数间以空格隔开。输入保证每个日期都是有效。
输出
对每个测试样例,输出其相应的答案。
样例输入
2005 12 1 2005 12 2
2005 12 1 2005 12 31
2004 1 1 2004 3 1
2003 1 1 2003 3 1
2001 1 1 2001 1 1
样例输出
1
30
60
59
0
//使用内置函数,但是时间超时
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
public class Main {
public static void out() throws ParseException {
Scanner in = new Scanner(System.in);
int d[][] = new int[2][3];
while(in.hasNext()) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
d[i][j] = in.nextInt();
}
}
//格式化日期
String idate[] = {"",""};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
idate[i] += Integer.toString(d[i][j]);
if(j != 2)
idate[i] += "-";
}
}
//
SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
java.util.Date mydate = null;
date= myFormat.parse(idate[0]);
mydate = myFormat.parse(idate[1]);
long day = (mydate.getTime() - date.getTime()) / (24 * 60 * 60 * 1000);
System.out.println(day);
}
}
public static void main(String[] args) throws ParseException {
out();
}
}