year_month_day_last
类
表示特定年份和月份的最后一天。
year_month_day_last
支持月份算术和年份算术,但不支持日期算术。 若要执行面向日期的算术,请将 year_month_day_last
转换为 sys_days
。
语法
class year_month_day_last; // C++20
成员
名称 | 说明 |
---|---|
构造函数 | 构造 year_month_day_last |
day |
获取月份/年份的最后一天。 |
month |
获取月份。 |
month_day_last |
获取存储在此 year_month_day_last 中的 month_day_last 值。 |
ok |
验证 year 和 month 值是否在有效范围内。 |
operator+= |
向此 year_month_day_last 添加月份或年份。 |
operator-= |
从此 year_month_day_last 减去月份或年份。 |
operator local_days |
获取从 sys_days 纪元到此 year_month_day_last 的天数作为 local_days 。 |
operator sys_days |
获取从 sys_days 纪元到此 year_month_day_last 的天数作为 sys_days 。 |
year |
获取年份。 |
非成员
“属性” | 描述 |
---|---|
operator+ |
添加月份或年份。 |
operator- |
减去月份或年份。 |
operator== |
确定两个 year_month_day_last 值是否相等。 |
operator<=> |
比较两个 year_month_day_last 值。 >, >=, <=, <, != 运算符由编译器合成。 |
operator<< |
将 year_month_day_last 输出到流。 |
要求
标头: <chrono>
(自C++20以来)
命名空间:std::chrono
编译器选项: /std:c++latest
构造函数
构造指定月份和年份的 year_month_day_last
。
constexpr year_month_day_last(const year& y, const month_day_last& mdl) noexcept;
参数
mdl
month_day_last
中的月份值存储在构造的 year_month_day_last
中。
y
year
值存储在构造的 year_month_day_last
中。
备注
有关用于指定日期的 C++ 20 语法的信息,请参阅 operator/
示例:创建 year_month_day_last
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day_last ymdl{ April / last / 1975 };
std::cout << ymdl;
return 0;
}
1975/Apr/last
day
如果 ok()
为 true
,则返回 day,其表示此 year_month_day_last
表示的年和月的最后一天。
constexpr day day() const noexcept;
返回值
如果 ok()
为 true
,则返回 day
,其表示 *this
表示的年和月的最后一天。 否则,未指定返回值。
local_days
获取此 year_month_day_last
中的月份、日期和年份作为天数计数。
constexpr explicit operator local_days() const noexcept;
返回值
local_days{sys_days{*this}.time_since_epoch()}
示例
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day_last ymdl{ June / last / 2021 };
auto ld = local_days(ymdl);
std::cout << ld.time_since_epoch();
return 0;
}
18808d
month
获取存储的月份值。
constexpr month month() const noexcept;
返回值
month
值。
month_day_last
获取存储在此 year_month_day_last
中的 month_day_last
值。
constexpr month_day_last month_day_last() const noexcept;
返回值
存储在此 year_month_day_last
中的 month_day_last
值。
operator sys_days
获取此 year_month_day_last
中的月份、日期和年份作为从系统时钟的纪元起的天数计数。
constexpr explicit operator sys_days() const noexcept;
返回值
返回 sys_days{this->year()/this->month()/this->day()}
示例
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day_last ymdl{ June / last / 2021 };
auto sd = sys_days(ymdl);
std::cout << sd.time_since_epoch();
return 0;
}
18808d
year
获取年份。
constexpr year year() const noexcept;
返回值
year
。
ok
检查存储在此 year_month_day_last
中的 year
和 month_day_last
值是否都位于有效范围内。
constexpr bool ok() const noexcept;
返回值
如果存储在此 year_month_day_last
中的 year
和 month_day_last
值都位于有效范围内,则为 true
。 否则为 false
。
operator+=
向此 year_month_day_last
添加月份或年份。
1) constexpr year_month_day_last& operator+=(const months& m) noexcept;
2) constexpr year_month_day_last& operator+=(const years& y) noexcept;
参数
m
要添加的月数。
y
要添加的年数。
返回值
*this
,反映加法的结果。
示例: operator+=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day_last ymdl{ April / last / 1975 };
std::cout << ymdl << '\n';
ymdl += months{1};
ymdl += years{1};
std::cout << ymdl;
return 0;
}
1975/Apr/last
1976/May/last
operator-=
从此 year_month_day_last
减去月份或年份。
1) constexpr year_month_day_last& operator-=(const months& m) noexcept;
2) constexpr year_month_day_last& operator-=(const years& y) noexcept;
参数
m
要减去的月数。
y
要减去的年数。
返回值
*this
,反映减法的结果。
示例: operator-=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_day_last ymdl{ April / last / 1975 };
std::cout << ymdl << '\n';
ymdl -= months{1};
ymdl -= years{1};
std::cout << ymdl;
return 0;
}
1975/Apr/last
1974/Mar/last
另请参阅
<chrono>
year
year_month
year_month_day
year_month_weekday
year_month_weekday_last
operator/
头文件引用