Namespaces
Variants

std::chrono:: operator+, std::chrono:: operator- (std::chrono::year_month_weekday)

From cppreference.net
(1) (depuis C++20)
(2) (depuis C++20)
(3) (depuis C++20)
(4) (depuis C++20)
(5) (depuis C++20)
(6) (depuis C++20)
1,2) Ajoute dm. count ( ) mois à la date représentée par ymwd . Le résultat a la même year() et month() que std:: chrono :: year_month ( ymwd. year ( ) , ymwd. month ( ) ) + dm et le même weekday() et index() que ymwd .
3,4) Ajoute dy. count ( ) années à la date représentée par ymwd . Le résultat est équivalent à std:: chrono :: year_month_weekday ( ymwd. year ( ) + dy, ymwd. month ( ) , ymwd. weekday_indexed ( ) ) .
5) Soustrait dm. count ( ) mois de la date représentée par ymwd . Équivalent à ymwd + - dm .
6) Soustrait dy. count ( ) années de la date représentée par ymwd . Équivalent à ymwd + - dy .

Pour les durées qui sont convertibles à la fois en std::chrono::years et en std::chrono::months , les surcharges de years (3,4,6) sont préférées si l'appel serait autrement ambigu.

Notes

Même si ymwd. ok ( ) est true , le year_month_weekday résultant peut ne pas représenter une date valide si ymwd. index ( ) est 5 .

Exemple

#include <cassert>
#include <chrono>
#include <iostream>
int main()
{
    auto ymwdi{1/std::chrono::Wednesday[1]/2021};
    std::cout << ymwdi << '\n';
    ymwdi = std::chrono::years(5) + ymwdi;
    // Premier mercredi de janvier 2026
    std::cout << ymwdi << '\n';
    assert(static_cast<std::chrono::year_month_day>(ymwdi) ==
           std::chrono::January/7/2026);
    ymwdi = ymwdi - std::chrono::months(6);
    // Premier mercredi de juillet 2025
    std::cout << ymwdi << '\n';
    assert(static_cast<std::chrono::year_month_day>(ymwdi) ==
           std::chrono::July/2/2025);
}

Sortie :

2021/Jan/Wed[1]
2026/Jan/Wed[1]
2025/Jul/Wed[1]