在编程中,日期和时间的处理是一个常见且复杂的任务。为了简化这一过程,可以实现一个简单的类,该类以自公元1年1月1日0时0分0秒起经过的秒数来表示日期和时间。这种表示方法允许将日期时间的数值表示转换为秒,反之亦然,并且可以方便地对日期时间进行加减操作。
这个类可以很容易地进行修改以满足额外的需求。下面介绍几个相关的类:
CUDateTime 类
CUDateTime 类代表从 "01 Jan, 0001 00:00:00" 开始经过的秒数。
以下是 CUDateTime 类的一些基本方法:
- CUDateTime (y, m, d, h, n, s) - 构造函数,接受年、月、日、时、分、秒作为参数。
- CUDateTime (const CUDateTime &) - 拷贝构造函数。
- CUDateTime (const SUDateTime &) - 从 SUDateTime 结构体构造 CUDateTime 对象。
- unsigned short WeekDay (void) const - 返回一周中的某天 [0-6](周日到周六)。
- operator SUDateTime (void) const - 将 CUDateTime 对象转换为 SUDateTime 结构体。
- operator std::wstring (void) const - 将 CUDateTime 对象转换为 std::wstring。
- friend bool operator < (const CUDateTime &, const CUDateTime &) - 小于操作符。
- friend bool operator == (const CUDateTime &, const CUDateTime &) - 等于操作符。
- friend CUDateTime operator + (const CUDateTime &, const CUDateSpan &) - 将时间跨度加到日期上。
- friend CUDateTime operator - (const CUDateTime &, const CUDateSpan &) - 从日期中减去时间跨度。
- friend CUDateTime & operator -= (CUDateTime &, const CUDateSpan &) - 将时间跨度加到日期上。
- friend CUDateTime & operator += (CUDateTime &, const CUDateSpan &) - 从日期中减去时间跨度。
SUDateTime 结构体
SUDateTime 是一个辅助结构体,用于表示日期和时间。
CUDateSpan 类
CUDateSpan 是一个辅助类,用于表示要加到日期上或从日期上减去的时间跨度。
以下是 CUDateSpan 类的一些基本方法:
- CUDateSpan (void) - 默认构造函数。
- CUDateSpan (const CUDateSpan &) - 拷贝构造函数。
- CUDateSpan (d, h, n, s) - 构造函数,接受天、时、分、秒作为参数。
假设有一个日期 "22 June, 2005 21:22:15",可以使用 CUDateTime 类来表示它:
CUDateTime dt(
2005,
6,
22,
21,
22,
15
);
如果想要在这个日期上加上1天、1小时和3秒,可以这样做:
SUDateTime sdt = dt + CUDateSpan(
1,
1,
0,
3
);
wprintf(L"%s", ((std::wstring)CUDateTime(sdt)).c_str());