题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
复制
20110412
20110422
输出
复制
11
import java.util.*;
import java.io.*;
import java.text.* ;
public class Main
{
public static int[] mon= {0,31,59,90,120,151,181,212,243,273,304,334};
public static void main(String[] args) throws ParseException{
try {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
String date1 = br.readLine();
String date2 = br.readLine();
int year1 = Integer.parseInt(date1.substring(0, 4));
int year2 = Integer.parseInt(date2.substring(0, 4));
int month1 = Integer.parseInt(date1.substring(4, 6));
int month2 = Integer.parseInt(date2.substring(4, 6));
int day1 = Integer.parseInt(date1.substring(6, 8));
int day2 = Integer.parseInt(date2.substring(6, 8));
int sum1 = getDay(year1, month1, day1);
int sum2 = getDay(year2, month2, day2);
System.out.println(Math.abs(sum2-sum1)+1);
} catch (IOException e) {
e.printStackTrace();
}
}
public static int getDay(int year, int month, int day){
int sum = 0;
for (int i = 1; i < year; i++) {
if ((i % 4 == 0 && i % 100 != 0 ) || i % 400 == 0) {
sum += 366;
} else {
sum += 365;
}
}
sum += mon[month-1];
if (((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0)&&month>1) sum++;
sum += day;
return sum;
}
}