year_month_weekday_last

特定年份、月份和该月的最后一个工作日。

语法

class year_month_weekday_last; // C++20

备注

year_month_weekday_last 支持面向年和月的算术,但不支持面向天的算术。 对于面向天的算术,请使用 sys_days 转换来转换为支持面向天的算数的 sys_days

year_month_weekday_last 是一种可完全复制的标准布局类类型。

成员

名称 描述
Constructor 使用指定的月份和工作日构造 year_month_weekday_last
month 获取月份值。
ok 检查 year_month_weekday_last 是否有效。
operator+= 添加指定的月份数或年份数。
operator-= 减去指定的月份数或年份数。
operator local_days 获取从 system_clock 纪元到此 year_month_weekday_last 的天数作为 local_days
operator sys_days 获取从 system_clock 纪元到此 year_month_weekday_last 的天数作为 sys_days
weekday 获取工作日。
weekday_last 获取存储在此 year_month_weekday_last 中的 weekday_last
year 获取年份。

非成员

“属性” 描述
operator+ 添加月份或年份。
operator- 减去月份或年份。
operator== 确定两个 year_month_weekday_last 值是否相等。
operator<< year_month_weekday_last 输出到给定流。

要求

标头: <chrono> (自C++20以来)

命名空间std::chrono

编译器选项: /std:c++latest

构造函数

构造一个 year_month_weekday_last

constexpr year_month_weekday_last(const year& y, const month& m, const weekday_last& wdl) noexcept

参数

m
month 值。

wdl
weekday_last 值。

y
year 值。

有关用于指定日期的 C++ 20 语法的信息,请参阅 operator/

示例:创建 year_month_weekday_last

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday_last ymwl{ 1997y / January / Wednesday[last] };
    std::cout << ymwl << '\n';
    
    return 0;
}
1997/Jan/Wed[last]

month

获取月份值。

constexpr month month() const noexcept;

返回值

month 值。

ok

检查存储在此 year_month_weekday_last 中的值是否有效。 存储在此 year_month_weekday_last 中的 yearmonthweekday_last 必须全部为 ok,此函数才能返回 true。 否则返回 false

constexpr bool ok() const noexcept;

返回值

如果 year_month_weekday_last 值有效,则为 true。 否则为 false
如果 monthweekday_indexedyear 都有效,则 year_month_weekday_last 有效。

operator+=

向此 year_month_weekday_last 添加月份或年份。

1) constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
2) constexpr year_month_weekday_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_weekday_last ymwl{ year(1997) / January / Wednesday[last] };
    std::cout << ymwl << '\n';

    ymwl += months{ 1 };
    ymwl += years{ 1 };

    std::cout << ymwl << '\n';
    
    return 0;
}
1997/Jan/Wed[last]
1998/Feb/Wed[last]

operator-=

从此 year_month_weekday_last 减去月份或年份。

1) constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
2) constexpr year_month_weekday_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_weekday_last ymwl{ year(1997) / January / Wednesday[last] };
    std::cout << ymwl << '\n';

    ymwl -= months{ 1 };
    ymwl -= years{ 1 };

    std::cout << ymwl << '\n';
    
    return 0;
}
1997/Jan/Wed[last]
1995/Dec/Wed[last]

operator local_days

获取从 system_clock 纪元(1970 年 1 月 1 日)到此 year_month_weekday_last 的天数作为 local_days

constexpr explicit operator local_days() const noexcept;

返回值

如果为 ok(),则返回天数作为 local_days{sys_days{*this}.time_since_epoch()}。 否则,未指定返回值。

operator sys_days

获取从 system_clock 纪元(1970 年 1 月 1 日)到此 year_month_day 的天数作为 sys_days

constexpr operator sys_days() const noexcept;

返回值

如果 ok() == true,则返回 sys_days,表示 year() / month() 的最后一个 weekday()(注意:/ 是日期运算符,而不是除法)。 否则,未指定返回值。

weekday

获取 weekday

constexpr weekday weekday() const noexcept;

返回值

weekday

weekday_last

获取存储在此 year_month_weekday_last 中的 weekday_last

constexpr weekday_indexed weekday_last() const noexcept;

返回值

weekday_last

year

获取年份值。

constexpr year year() const noexcept;

返回值

year 值。

另请参阅

<chrono>
year
year_month
year_month_day
year_month_day_last
year_month_weekday
operator/
头文件引用