1360. 日期之间隔几天

请你编写一个程序来计算两个日期之间隔了多少天。

日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。

示例 1:

输入:date1 = "2019-06-29", date2 = "2019-06-30"
输出:1

示例 2:

输入:date1 = "2020-01-15", date2 = "2019-12-31"
输出:15

提示:

  • 给定的日期是 1971 年到 2100 年之间的有效日期。
#include<iostream>
#include<algorithm>
using namespace std;

class Solution {
public:
    int year(char a,char b,char c,char d){
        int aa = a-'0',bb=b-'0',cc=c-'0',dd=d-'0';
        return aa*1000+bb*100+cc*10+dd;
    }
    int monthOrDay(char a,char b){
        int aa=a-'0',bb=b-'0';
        return aa*10+bb;
    }
    bool is(int year){
        if((year % 4==0&&year%100!=0)||year%400==0){
            return true;
        }return false;
    }
    int Sum(int year ,int month ,int day){
        int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int sum=0;
        for(int i=0;i<year;i++){
            if(is(i)){
                sum+=366;
            }else{
                sum+=365;
            }
        }
        for(int i=1;i<month;i++){
            sum+=m[i];
        }
        sum+=day;
        if(is(year)&&month>2){
            sum+=1;
        }
        return sum;
    }
    int daysBetweenDates(string date1, string date2) {
        int year1 = year(date1[0], date1[1], date1[2], date1[3]);
        int year2 = year(date2[0], date2[1], date2[2], date2[3]);
        int month1 = monthOrDay(date1[5], date1[6]);
        int month2 = monthOrDay(date2[5], date2[6]);
        int day1 = monthOrDay(date1[8], date1[9]);
        int day2 = monthOrDay(date2[8], date2[9]);
        int sum1 = Sum(year1, month1, day1);
        int sum2 = Sum(year2, month2, day2);
        return max(sum1,sum2)-min(sum1,sum2);
    }
};
int main(){
    freopen("D:\\YJ.txt","r",stdin);
    string date1,date2;
    cin>>date1>>date2;
    Solution solution;
    int days =  solution.daysBetweenDates(date1, date2);
    cout<<days;
    return 0;
}
发布了43 篇原创文章 · 获赞 7 · 访问量 1239

猜你喜欢

转载自blog.csdn.net/Young_Naive/article/details/104519836