请你编写一个程序来计算两个日期之间隔了多少天。
日期以字符串形式给出,格式为 YYYY-MM-DD,如示例所示。
示例 1:
输入:date1 = "2019-06-29", date2 = "2019-06-30"
输出:1
示例 2:
输入:date1 = "2020-01-15", date2 = "2019-12-31"
输出:15
链接:🔗
计算天数: 采用8位数循环的方式,通过判断该天是不是一个合理的天数而得到日期差
class Solution {
public:
int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
bool isvalid(int d){
int day = d % 100;
d /= 100;
int month = d % 100;
if(month <= 0 || month > 12) return false;
int year = d/100;
int leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if (month == 2){
if (day > 0 && day <= months[month - 1] + leap)
return true;
}else{
if (day > 0 && day <= months[month - 1])
return true;
}
return false;
}
int daysBetweenDates(string date1, string date2) {
int d1 = 0,d2 = 0;
for (auto c:date1){
if (c != '-')
d1 = d1 * 10 + c - '0';
}
for (auto c:date2){
if (c != '-')
d2 = d2 * 10 + c - '0';
}
if (d1 > d2){
int temp = d2;
d2 = d1;
d1 = temp;
}
int ans = 0;
for (int i = d1 + 1 ; i <= d2; ++i){
if (isvalid(i))
ans++;
}
return ans;
}
};