#include <iostream>
#include <chrono>
#include <vector>
using namespace std;
using namespace std::chrono;
// Convert Y-M-D to sys_days
sys_days to_sys_days(const year_month_day& ymd) {
return sys_days{ymd};
}
// Convert sys_days to Y-M-D
year_month_day from_sys_days(const sys_days& sd) {
return year_month_day{sd};
}
// Print a date
void print_date(const year_month_day& d) {
cout << int(d.year()) << "-"
<< unsigned(d.month()) << "-"
<< unsigned(d.day()) << "\n";
}
// Compute number of days between two dates
int days_between(const year_month_day& a, const year_month_day& b) {
sys_days sa = to_sys_days(a);
sys_days sb = to_sys_days(b);
return (sb - sa).count();
}
// Add N days to a date
year_month_day add_days(const year_month_day& d, int n) {
sys_days sd = to_sys_days(d);
sd += days{n};
return from_sys_days(sd);
}
// Generate vector of dates from start to end (inclusive)
vector<year_month_day> generate_dates(const year_month_day& start,
const year_month_day& end) {
vector<year_month_day> result;
sys_days s = to_sys_days(start);
sys_days e = to_sys_days(end);
if (s > e) return result;
for (sys_days d = s; d <= e; d += days{1}) {
result.push_back(from_sys_days(d));
}
return result;
}
int main() {
year_month_day start {year{2026}, month{1}, day{3}};
year_month_day end {year{2026}, month{1}, day{12}};
auto dates = generate_dates(start, end);
cout << "Generated " << dates.size() << " dates:\n";
for (const auto& d : dates)
print_date(d);
return 0;
}
/*
run:
Generated 10 dates:
2026-1-3
2026-1-4
2026-1-5
2026-1-6
2026-1-7
2026-1-8
2026-1-9
2026-1-10
2026-1-11
2026-1-12
*/