std::chrono...ar_month_day(3)
π NAME π
okay bestie, welcome to the std::chrono...ar_month_day(3) page from the C++ Standard Libary. The NAME is std::chrono::year_month_day::year_month_day - std::chrono::year_month_day::year_month_day β yes, it's literally the constructor page and it said its own name twice. iconic behavior. This whole page is about std::chrono::year_month_day's constructors, no cap.
β¨ Synopsis β¨
Here's the overload lineup, all since C++20:
(1) since C++20
year_month_day() = default;
(2) since C++20
constexpr year_month_day( const std::chrono::year& y,
const std::chrono::month& m,
const std::chrono::day& d ) noexcept;
(3) since C++20
constexpr year_month_day( const std::chrono::year_month_day_last& ymdl ) noexcept;
(4) since C++20
constexpr year_month_day( const std::chrono::sys_days& dp ) noexcept;
(5) since C++20
constexpr explicit year_month_day( const std::chrono::local_days& dp ) noexcept;
Constructs a year_month_day object. That's the whole job.
- Default constructor β leaves the date uninitialized. (bestie, it's giving "no thoughts, head empty" π)
- Constructs a
year_month_dayobject that stores the yeary, monthm, and dayd. - Constructs a
year_month_dayobject that stores the yearymdl.year(), monthymdl.month(), and dayymdl.day(). - Constructs a
year_month_dayobject that represent the same date as the one represented bydp. - Constructs a
year_month_dayobject that represent the same date as the one represented bydp, as if byyear_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. Stable round-trip, slay.
πΈ 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/. Cute.
π 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)
okay bestie, that's the whole page π β source/version: http://cppreference.com, date: 2024.06.10, manual: std::chrono...ar_month_day(3). periodt. π«Ά
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms