W3cubDocs

/C++

std::chrono::year_month_day

Defined in header <chrono>
class year_month_day;
(since C++20)

The class year_month_day represents a specific year, month, and day. It is a field-based time point, with a resolution of std::chrono::days. std::chrono::years- and std::chrono::months-oriented arithmetic are supported directly. An implicit conversion to and from std::chrono::sys_days allows std::chrono::days-oriented arithmetic to be performed efficiently.

year_month_day is a TriviallyCopyable StandardLayoutType.

Member functions

constructs a year_month_day
(public member function)
modifies the time point by some number of months or years
(public member function)
accesses the year, month, and day stored in this object
(public member function)
converts to a std::chrono::time_point
(public member function)
checks if the year_month_day represents a valid date
(public member function)

Nonmember functions

(C++20)
compares two year_month_day values
(function)
(C++20)
adds or subtracts a year_month_day and some number of years or months
(function)
(C++20)
outputs a year_month_day into a stream
(function template)
(C++20)
parses a year_month_day from a stream according to the provided format
(function template)

Helper classes

(C++20)
formatting support for year_month_day
(class template specialization)

Example

#include <chrono>
#include <iostream>
 
int main()
{
    const std::chrono::time_point now{std::chrono::system_clock::now()};
 
    const std::chrono::year_month_day ymd{std::chrono::floor<std::chrono::days>(now)};
 
    std::cout << "Current Year: " << static_cast<int>(ymd.year())
              << ", Month: " << static_cast<unsigned>(ymd.month())
              << ", Day: " << static_cast<unsigned>(ymd.day()) << '\n';
}

Possible output:

Current Year: 2023, Month: 6, Day: 29

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/chrono/year_month_day