题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include <iostream> #include <iterator> using namespace std; class date { public: int _year; int _month; int _day; bool operator<(const date& d2) { if (_year<d2._year) { return true; } else if (_year == d2._year && _month < d2._month) { return true; } else if (_year == d2._year && _month == d2._month && _day < d2._day) { return true; } else { return false; } } int get_Month_day(int year, int month) { int month_day[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; if (month==2 && (year % 100 != 0 && year % 4 == 0) || year % 400 == 0) { month_day[2] = 29; } return month_day[month]; } date& operator+=(int day) { _day = _day + day; while (_day > get_Month_day(_year,_month)) { _day = _day - get_Month_day(_year, _month); ++_month; if (_month>12) { ++_year; _month = 1; } } return *this; } date operator+(int day) { date temp(*this); temp += day; return temp; } int operator-(const date& d2) { date max = *this; date min = d2; int flag = 1; if (*this < d2) { max = d2; min = *this; flag = -1; } int count = 0; while (min < max) { min=min+1; count++; } return count+1; } }; void setDate(int a ,date& d) { d._day = a%100; a=a/100; d._month=a%100; a=a/100; d._year= a; } int main() { unsigned int a, b; date d1; date d2; while(cin>>a>>b) { setDate(a,d1); setDate(b,d2); int ret; ret = d2-d1; cout<<ret; } } // 64 位输出请用 printf("%lld")