C++ - Inkrementera/addera månader till std::chrono::system_clock::time_point?
Hej,
Jag håller på med ett litet program där jag behöver addera ett visst antal månader till en std::chrono::system_clock::time_point; jag har inte kommit på något bra sätt än själv. Min kompilator:
alexl@PD70PNP:~$ g++ --version
g++ (Debian 12.2.0-14) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Det ledde mig till denna sida:
https://stackoverflow.com/questions/43010362/c-add-months-to-chronosystem-clocktime-point
Dock fungerar inte koden från sektionen "The Calendrical Computation" (visad nedan) för mig. Jag har korrigerat exemplet för C++20:
// Get the current time
auto now = std::chrono::system_clock::now();
// Get a days-precision chrono::time_point
auto sd = std::chrono::floor<days>(now);
// Record the time of day
auto time_of_day = now - sd;
// Convert to a y/m/d calendar data structure
std::chrono::year_month_day ymd = sd;
// Add the months
ymd += std::chrono::months{8};
// Add some policy for overflowing the day-of-month if desired
if (!ymd.ok())
ymd = ymd.year()/ymd.month()/last;
// Convert back to system_clock::time_point
std::chrono::system_clock::time_point later = sys_days{ymd} + time_of_day;
Den framtida fungerande koden skall sättas in i en funktion som än så länge ser ut så här:
std::chrono::system_clock::time_point add_months(std::chrono::system_clock::time_point tp, int months) {
//Function body.
}
Jag vill komma fram till en funktion som kan inkrementera/addera månader så att t.ex.:
1901-01-01 + 1 månad = 1901-02-01 osv.
Jag hoppas jag gjort mig förstådd och undrar om någon kan hjälpa mig?