# std::chrono::year_month_day::year_month_day

< cpp‎ | chrono‎ | year month day

year_month_day() = default; | (1) | (C++20 起)
constexpr year_month_day(const std::chrono::year& y, const std::chrono::month& m, const std::chrono::day& d) noexcept; | (2) | (C++20 起)
constexpr year_month_day(const std::chrono::year_month_day_last& ymdl) noexcept; |  | (C++20 起)
constexpr year_month_day(const std::chrono::sys_days& dp) noexcept; |  | (C++20 起)
explicit constexpr year_month_day(const std::chrono::local_days& dp) noexcept; |  | (C++20 起)

构造 `year_month_day` 对象。

1) 默认构造函数保留日期未初始化。
2) 构造存储年 `y` 、月 `m` 和日 `d` 的 `year_month_day` 对象。
3) 构造存储年 ymdl.year() 、月 ymdl.month() 和日 ymdl.day() 的 `year_month_day` 对象。
4) 构造与 `dp` 表示相同日期的 `year_month_day` 对象。
5) 如同用 year_month_day(sys_days(dp.time_since_epoch())) 构造与 `dp` 表示相同日期的 `year_month_day` 对象。

构造函数 (3-4) 分别定义来自 std::chrono::year_month_day_last 和 std::chrono::sys_days 的隐式转换。

对于任何表示合法日期的 `year_month_day` 对象 `ymd` （ ymd.ok() == true ），转换 `ymd` 为 `sys_days` 再转换回来生成相同值。

### 注意

亦能由将部分日期类型 std::chrono::year_month 及 std::chrono::month_day 与缺失组分（分别为 `day` 和 `year` ）结合，用 `operator/` 创建 `year_month_day` 。

### 参阅

operator/ (C++20) | 创建格里高利历日期的约定语法 (函数)