year_month_weekday 類別

代表月份的特定年份、月份和第 n 個工作日。

語法

class year_month_weekday; // C++20

備註

year_month_weekday 支援以年和月為導向的算術,但不支援以天為導向的算術。 若為天導向算術,請使用 sys_days 轉換 sys_days轉換為 ,其支援天導向算術。

year_month_weekday 是一種簡單可複製且標準版面配置類別類型。

成員

名稱 描述
Constructor year_month_weekday使用指定的月份與工作日建構 。
index 取得工作日的索引。
month 取得月份值。
ok 檢查是否 year_month_weekday 有效。
operator+= 新增指定的月數或年份。
operator-= 減去指定的月數或年份。
operator local_days 取得從 system_clock epoch 到這個 year_month_weekday 的天數計數。 local_days
operator sys_days 取得從 system_clock epoch 到這個 year_month_weekday 的天數計數。 sys_days
weekday 取得工作日。
weekday_indexed 取得儲存在此 中的 year_month_weekday[weekday_indexed] 。
year 取得年份。

非成員

名稱 描述
operator+ 新增月份或年份。
operator- 減去月份或年份。
operator== 判斷兩個 year_month_weekday 值是否相等。
operator<< year_month_weekday將 輸出至指定的數據流。

需求

標頭: <chrono> (自C++20起)

命名空間std::chrono

編譯程序選項: /std:c++latest

建構函式

建構 year_month_weekday

// 1)
year_month_weekday() = default

// 2)
constexpr year_month_weekday(const year& y, const month& m, const weekday_indexed& wdi) noexcept;

// 3) 
constexpr explicit year_month_weekday(const local_days& dp) noexcept;

// 4)
constexpr year_month_weekday(const sys_days& dp) noexcept;

參數

m
month 值。

dp
sys_dayslocal_days

wdi
weekday 值。

y
year 值。

備註:建構函式

1) 預設建構函式不會初始化任何欄位。

2) 建構 year_month_weekday 對應至指定 yearmonthweekday_indexed的 。

3) 建構 year_month_weekday 對應至 所表示日期的 sys_days{dp.time_since_epoch()}

4) 建構 year_month_weekday 對應至 所表示日期的 dp。 對於任何 為的 year_month_weekday (ymdl)而言,ok()year_month_weekday{sys_days{ymdl}} operator== 的比較將會是 truetrue

如需用來指定日期之C++20 語法的相關信息,請參閱 operator/

範例:建立 year_month_weekday

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

using namespace std::chrono;

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

index

取得此 year_month_weekday中工作日的周索引。

constexpr unsigned index() const noexcept;

傳回值

工作日的索引。 例如,如果工作日是當周的第一個星期三,則索引會是 1。

month

取得月份值。

constexpr month month() const noexcept;

傳回值

month 值。

ok

檢查儲存在此 中的 year_month_weekday 值是否有效。 year儲存在此 中的 year_month_weekdaymonthweekday_index 都必須ok讓函式傳回 true。 否則傳回 false

constexpr bool ok() const noexcept;

傳回值

true 如果值有效,則 year_month_weekday 為 。 否則為 false
year_month_weekday如果 兩者month都有效且值有效,則 weekday_indexed 為有效。

operator+=

將月份或年份新增至此 year_month_weekday

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

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

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

operator-=

從這個 year_month_weekday減去月份或年份。

1) constexpr year_month_weekday& operator-=(const months& m) noexcept;
2) constexpr year_month_weekday& 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 ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';

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

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

operator local_days

取得從 system_clock epoch (1/1/1/1970) 到這個 year_month_weekday 的天數計數 local_days

constexpr explicit operator local_days() const noexcept;

傳回值

如果 ok()為 ,則會以 傳回天數 local_days{sys_days{*this}.time_since_epoch()}的計數。 否則傳回的值未指定。

operator sys_days

取得從 system_clock epoch (1/1/1/1970) 到這個year_month_day的天數計數。sys_days

constexpr operator sys_days() const noexcept;

傳回值

如果ok()為 ,則傳sys_days回 ,表示第一個 weekday() 之後的year()/month()日期(index() - 1) * 7。 如果 index()0,則傳 sys_days 回的 表示第一個 weekday()year()/month()日期 7 天前。

weekday

weekday取得儲存在此 weekday_indexed 中儲存的 year_month_weekday

constexpr weekday weekday() const noexcept;

傳回值

weekday 值。

weekday_indexed

weekday_indexed取得儲存在這個 中的 year_month_weekday

constexpr weekday_indexed weekday_indexed() const noexcept;

傳回值

weekday_indexed 值。

year

取得年份值。

constexpr year year() const noexcept;

傳回值

year 值。

另請參閱

<chrono>
year
year_month
year_month_day
year_month_day_last
year_month_weekday_last
operator/標頭檔參考