平日里我们经常会涉及到日期计算的问题,比如:几天后是几月几日,特定的两个日期之间隔了几天等等,我们会通过查日历或通过上网使用日期计算器来实现,今天我们就来探讨日期计算器的代码以及实现原理。
1、概要:
需要建立3个文件:
1.Date.h:用于类中的函数声明
2.Date.cpp:用于类中的函数定义
3.test.cpp:用于测试函数
2、日期类Date的实现
2.1获取日期中月份的天数
//获取日期天数
int GetMonthDay(int year, int month)
{
assert(month > 0 && month < 13);
int monthday[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//处理平闰年二月天数问题
if (month == 2 && (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
return 29;
}
else
{
return monthday[month];
}
此函数会被频繁调用,所以我们可将它设置成内联函数,直接定义在类里面,声明定义不分离,以提高效率。
2.2检查日期合法性
bool Date::Checkdate()
{
if (_month < 1 || _month>12 || _day<1 || _day>GetMonthDay(_year, _month))
{
return false;
}
else
{
return true;
}
}
2.3日期之间比大小
2.3.1 <运算符重载
存在3种情况满足实例化对象d1小于d2
1.d1的年小于d2的年
2. d1的年等于d2的年,d1的月小于d2的月
3. d1的年等于d2的年,d1的月等于d2的月,d1的天小于d2的天
代码如下:
//&