std::chrono::year_month_day::year_month_day

来自cppreference.com
 
 
工具库
语言支持
类型支持(基本类型、RTTI)
库功能特性测试宏 (C++20)
动态内存管理
程序工具
协程支持 (C++20)
变参数函数
调试支持
(C++26)
三路比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)

 
 
 
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)
创建格里高利历日期的约定语法
(函数)