题解 | #日期差值#

日期差值

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")

全部评论

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
牛客717484937号:双飞硕没实习挺要命的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务