std::chrono::year_month_day::year_month_day

来自cppreference.com
 
 
 
 
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;
(3)(C++20 起)
constexpr year_month_day( const std::chrono::sys_days& dp ) noexcept;
(4)(C++20 起)
constexpr explicit year_month_day( const std::chrono::local_days& dp ) noexcept;
(5)(C++20 起)

构造 year_month_day 对象。

1) 默认构造函数保留日期未初始化。
2) 构造存储年 y、月 m 和日 dyear_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_laststd::chrono::sys_days 的隐式转换。

对于任何表示合法日期的 year_month_day 对象 ymdymd.ok() == true),转换 ymdsys_days 再转换回来将生成相同值。

注解

亦能由将部分日期类型 std::chrono::year_monthstd::chrono::month_day 与缺失组分(分别为 dayyear)结合,用 operator/ 创建 year_month_day

示例

#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 // 重载 (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) // 重载 (4)
    );
    std::cout << "ymd4: " << ymd4 << '\n';
}

可能的输出:

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

参阅

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