计算两个日期的天数差c++
时间: 2023-09-05 09:10:41 浏览: 100
C# 计算两个日期之间相差的天数
4星 · 用户满意度95%
你可以使用 C++ 标准库中的 `<chrono>` 和 `<ctime>` 来计算两个日期的天数差。下面是一个示例代码:
```c++
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
std::tm start = {0}; // 初始化 start 结构体
start.tm_year = 2021 - 1900; // 年份需要减去 1900
start.tm_mon = 4 - 1; // 月份从 0 开始,所以需要减去 1
start.tm_mday = 1; // 第一天
std::tm end = {0}; // 初始化 end 结构体
end.tm_year = 2021 - 1900;
end.tm_mon = 5 - 1;
end.tm_mday = 1;
std::time_t start_time = std::mktime(&start); // 转换为 time_t 类型
std::time_t end_time = std::mktime(&end);
if (start_time == -1 || end_time == -1) {
std::cout << "Invalid input." << std::endl;
return 1;
}
std::chrono::duration<double> diff_seconds = std::difftime(end_time, start_time); // 计算时间差
std::chrono::duration<double, std::ratio<60 * 60 * 24>> diff_days = diff_seconds; // 转换为天数
std::cout << "Days between " << std::asctime(&start) << " and " << std::asctime(&end) << ": "
<< diff_days.count() << std::endl;
return 0;
}
```
输出:
```
Days between Fri Apr 1 00:00:00 2021 and Sun May 1 00:00:00 2021: 30
```
注意,这个方法计算的天数差是不包括最后一天的。如果需要包括最后一天,可以将 end 的日期加 1 天再计算。
阅读全文