题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include <iostream> #include <string> using namespace std; bool isRunnian(int year){ return year%400==0||year%4==0&&year%100!=0; } int sumDay(int year1,int month1,int day1,int year2 , int month2, int day2){ int dayOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int day=0; for(int i=year1;i<=year2;i++){ if(isRunnian(i)) dayOfMonth[2]=29; else dayOfMonth[2]=28; for (int j=(i==year1?month1:1);j<=(i==year2?month2:12);j++) { if(i==year1&&j==month1&&i==year2&&j==month2) { day=day2-day1+1; } else if(i==year1&&j==month1) { day=day+dayOfMonth[j]-(day1-1); } else if(i==year2&&j==month2) { day= day+day2; } else day=day+dayOfMonth[j]; } } return day; } int main() { int day1,day2,mon1,mon2,year1,year2; scanf("%4d%2d%2d",&year1,&mon1,&day1); scanf("%4d%2d%2d",&year2,&mon2,&day2); cout<<sumDay(year1,mon1,day1,year2,mon2,day2)<<endl; }