Scroll to navigation

std::chrono::year_month_day::year_month_day(3) C++ Standard Libary std::chrono::year_month_day::year_month_day(3)

NAME

std::chrono::year_month_day::year_month_day - std::chrono::year_month_day::year_month_day

Synopsis


year_month_day() = default; (1) (since C++20)
constexpr year_month_day( const std::chrono::year& y,


const std::chrono::month& m, (2) (since C++20)


const std::chrono::day& d ) noexcept;
constexpr year_month_day( const std::chrono::year_month_day_last& (3) (since C++20)
ymdl ) noexcept;
constexpr year_month_day( const std::chrono::sys_days& dp ) (4) (since C++20)
noexcept;
constexpr explicit year_month_day( const std::chrono::local_days& (5) (since C++20)
dp ) noexcept;


Constructs a year_month_day object.


1) Default constructor leaves the date uninitialized.
2) Constructs a year_month_day object that stores the year y, month m and day d.
3) Constructs a year_month_day object that stores the year ymdl.year(), month
ymdl.month() and day ymdl.day().
4) Constructs a year_month_day object that represent the same date as the one
represented by dp.
5) Constructs a year_month_day object that represent the same date as the one
represented by dp, as if by year_month_day(sys_days(dp.time_since_epoch())).


Constructors (3,4) define implicit conversions from std::chrono::year_month_day_last
and std::chrono::sys_days, respectively.


For any year_month_day object ymd representing a valid date (ymd.ok() == true),
converting ymd to sys_days and back yields the same value.

Notes


A year_month_day can also be created by combining one of the partial-date types
std::chrono::year_month and std::chrono::month_day with the missing component (day
and year, respectively) using operator/.

Example

// Run this code


#include <chrono>
#include <iostream>


int main()
{
using namespace std::chrono;


constexpr auto ymd2 = std::chrono::year_month_day(
2020y, std::chrono::January, 31d // overload (2)
);
std::cout << "ymd2: " << ymd2 << '\n';


constexpr auto ymd3 = std::chrono::year_month_day(
std::chrono::April / std::chrono::Monday[last] / 2023y // overload (3)
);
std::cout << "ymd3: " << ymd3 << '\n';


const auto now = std::chrono::system_clock::now();
const auto ymd4 = std::chrono::year_month_day(
std::chrono::floor<std::chrono::days>(now) // overload (4)
);
std::cout << "ymd4: " << ymd4 << '\n';
}

Possible output:


ymd2: 2020-01-31
ymd3: 2023-04-24
ymd4: 2023-08-30

See also


operator/ conventional syntax for Gregorian calendar date creation
(C++20) (function)

2024.06.10 http://cppreference.com