C++:
比较两个日期
如何做:
#include <iostream>
#include <ctime>
int main() {
std::tm date1 = {};
std::tm date2 = {};
// 设置日期1为2023年4月1日
date1.tm_year = 123; // 从1900年开始算
date1.tm_mon = 3; // 从0开始算(0-11)
date1.tm_mday = 1;
// 设置日期2为2023年4月2日
date2.tm_year = 123;
date2.tm_mon = 3;
date2.tm_mday = 2;
// 将tm结构转换为time_t
time_t time1 = mktime(&date1);
time_t time2 = mktime(&date2);
// 比较日期
if (time1 < time2) {
std::cout << "日期1早于日期2。" << std::endl;
} else if (time1 > time2) {
std::cout << "日期1晚于日期2。" << std::endl;
} else {
std::cout << "两个日期相同。" << std::endl;
}
return 0;
}
输出可能是:
日期1早于日期2。
深入探究
早期的C++版本并没有专门的日期时间库,通常使用C语言的 <ctime>
处理日期时间。C++11引入了 <chrono>
库,提供了更好的时间点和持续时间管理。不过,对于日期的比较,最简单的方式仍然是使用C标准库的tm
结构和mktime
函数。这种方法适合通用场景,但如果需要更高精度或处理诸如时区和夏令时的复杂问题,就需要考虑用<chrono>
库或第三方库了。
C++20进一步改善了日期和时间的处理机制,引入了新的标准库模块<chrono>
,提供了对日期、时钟和时区的全面支持。
日常使用中,除了时间戳比较,你还可能需要处理实际的日历日期。这时候,使用如boost.date_time等第三方库将提供更多灵活性和功能。
查看更多
- C++
<chrono>
库文档: https://en.cppreference.com/w/cpp/header/chrono - C标准库时间处理
<ctime>
: https://en.cppreference.com/w/c/chrono - Boost.Date_Time库官网: https://www.boost.org/doc/libs/release/libs/date_time/