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 验证 yearmonth 值是否在有效范围内。
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 中的 yearmonth_day_last 值是否都位于有效范围内。

constexpr bool ok() const noexcept;

返回值

如果存储在此 year_month_day_last 中的 yearmonth_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/
头文件引用