C++获取两个yyyy-MM-dd日期间的所有日期
时间: 2023-08-21 22:03:35 浏览: 198
下面是一个简单的C++代码片段,用于获取两个yyyy-MM-dd日期之间的所有日期:
```
#include <iostream>
#include <vector>
#include <chrono>
#include <ctime>
std::vector<std::string> getDatesInRange(std::string startDate, std::string endDate)
{
std::vector<std::string> dates;
std::tm tm = {};
// 解析起始日期
std::istringstream ss(startDate);
ss >> std::get_time(&tm, "%Y-%m-%d");
auto start = std::chrono::system_clock::from_time_t(std::mktime(&tm));
// 解析结束日期
ss.clear();
ss.str(endDate);
ss >> std::get_time(&tm, "%Y-%m-%d");
auto end = std::chrono::system_clock::from_time_t(std::mktime(&tm));
// 计算日期范围
for (auto d = start; d <= end; d += std::chrono::hours(24))
{
auto time = std::chrono::system_clock::to_time_t(d);
std::stringstream ss;
ss << std::put_time(std::localtime(&time), "%Y-%m-%d");
dates.push_back(ss.str());
}
return dates;
}
int main()
{
auto dates = getDatesInRange("2022-01-01", "2022-01-10");
for (auto date : dates)
{
std::cout << date << std::endl;
}
return 0;
}
```
在这个例子中,我们使用了`std::chrono`库来处理日期。我们首先将起始日期和结束日期解析为`std::chrono::system_clock::time_point`类型,然后使用`std::chrono::hours`来增加日期,直到我们达到了结束日期。最后,我们使用`std::put_time`格式化日期,并将其作为字符串添加到一个`std::vector`中返回。
阅读全文