std::chrono::year_month_day::year_month_day
来自cppreference.com
< 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, |
(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 和日 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
。
示例
运行此代码
#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) |
创建格里高利历日期的约定语法 (函数) |