3498. 日期差值
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入格式
输入包含多组测试数据。
每组数据占两行,分别表示两个日期,形式为 YYYYMMDD
。
输出格式
每组数据输出一行,即日期差值。
数据范围
年份范围 [1,9999][1,9999],
保证输入日期合法。
测试数据的组数不超过 100100。
输入样例:
20110412
20110422
输出样例:
11
思路分析:
1. 先定义一个数组保存每个月的天数
2.判断是否为闰年
2.总天数=年天数(所在年不计入)+月天数(所在月不计入)+日
实现代码:
import java.util.*;
public class Main{
static int arr[]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.next(),t=sc.next();
System.out.println(Math.abs(find(s)-find(t))+1);
}
}
static int find(String s){
int year=Integer.parseInt(s.substring(0,4)),month=Integer.parseInt(s.substring(4,6)),day=Integer.parseInt(s.substring(6));
int ans=0;
for(int i=1;i<year;i++){
ans+=i%400==0||i%100!=0&&i%4==0?366:365;
}
for(int i=1;i<month;i++){
ans+=arr[i];
if(i==2&&(year%400==0||year%100!=0&&year%4==0)){
ans++;
}
}
return ans+day;
}
}