共用方式為


weekday 類別

代表公曆中的星期幾。 例如,星期二。

語法

class weekday; // C++20

備註

weekday可以保留值 [0, 255],但通常會保留值 [0, 6] 來代表一周中的一天。 如需可與 類別搭配weekday使用的常數,請參閱下面的 Weekday 常數

成員

名稱 描述
建構函式 weekday建構 。
c_encoding weekday取得值。
iso_encoding 取得 ISO 8601 weekday 值。
ok 檢查值是否 weekday 有效。
operator++ weekday遞增 。
operator+= 將指定的工作日數目新增到這個 weekday
operator-- weekday遞減 。
operator-= 從這個 weekday減去指定的工作日數目。
operator[] 從這個 weekday建立weekday_indexedweekday_last

非成員

名稱 描述
from_stream weekday使用指定的格式,從指定的資料串流剖析 。
operator+ 將指定的工作日數目新增到這個 weekday
operator- 從這個 weekday減去指定的工作日數目,或找出兩個 weekday 對象之間的差異。
operator== 判斷兩個 weekday 物件是否相等。
operator<< weekday將輸出至數據流。

需求

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

命名空間std::chrono

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

建構函式

建構 weekday

1) weekday() = default; // C++20
2) explicit constexpr weekday(unsigned wd) noexcept; // C++20
3) constexpr weekday(const sys_days& dp) noexcept; // C++20
4) explicit constexpr weekday(const local_days& dp) noexcept; // C++20

參數

dp
weekday使用星期dp幾建構 。

wd
weekday使用 值wd建構 。

備註

1) 預設建構函式不會初始化工作日值。
2) 使用指定的值建構 weekday
如果 wd 為 7, weekday 則會使用值為 0 來建構 。
請勿使用超過 255 的值初始化,否則產生的 weekday 值將會有未指定的值。
3) 計算一周中的哪一天對應至 std::chrono::sys_daysdp,並使用該天建構 weekday
4) 計算對應至 std::chrono::local_days 值的 dp星期幾,並使用該天建構 weekday 。 其行為就像您使用 建立的weekdayweekday(std::chrono::sys_days(dp.time_since_epoch()))一樣。

範例:建立 weekday

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

using namespace std::chrono;

int main()
{
    weekday wd{ Wednesday };
    weekday wd2{ 3 };
    std::cout << wd << '\n' << wd2;
    
    return 0;
}
Wednesday
Wednesday

c_encoding

constexpr unsigned c_encoding() const noexcept;

傳回值

工作日值。

iso_encoding

工作日值,但星期日 (0) 會解譯為每個 ISO 8601 7。

constexpr unsigned iso_encoding() const noexcept;

傳回值

工作日值。

ok

檢查儲存在此 中的 weekday 值是否在有效範圍內。

constexpr bool is_leap() const noexcept;

傳回值

true 如果工作日值在 [0, 6] 範圍內, 則為 。 否則為 false

operator++

將1新增至工作日值。

1) constexpr std::chrono::weekday& operator++() noexcept;
2) constexpr std::chrono::weekday operator++(int) noexcept;

傳回值

1) 遞增後工作日*this參考(後置遞增)。
2) 的 weekday複本, 然後 才遞增(前置遞增)。

範例: operator++

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

using namespace std;
using namespace std::chrono;

int main()
{
    std::chrono::weekday wd{Thursday};

    std::cout << wd << " " << ++wd << "\n"; // constexpr weekday& operator++() noexcept
    std::cout << wd << " " << wd++ << "\n"; // constexpr weekday operator++(int) noexcept
    std::cout << wd << "\n";

    return 0;
}
Thu Fri
Fri Fri
Sat

備註

遞增值為模數 7。 它一律在 [0, 6] 範圍內。

operator--

weekday 值減去 1。

1) constexpr std::chrono::weekday& operator--() noexcept;
2) constexpr std::chrono::weekday operator--(int) noexcept;

傳回值

1) *this weekday 遞減后 參考 (後置遞減)。
2) 遞減前weekday複本(前置詞遞減)。

範例: operator--

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

using namespace std;
using namespace std::chrono;

int main()
{
    weekday y = weekday{Thursday};

    cout << y << " " << --y << "\n"; // constexpr weekday& operator--() noexcept
    cout << y << " " << y-- << "\n"; // constexpr weekday operator--(int) noexcept
    cout << y << "\n";

    return 0;
}
Thu Wed
Wed Wed
Tue

備註

如果遞減的結果小於 0,則會設定為 6。

operator+=

將天數新增至 weekday

constexpr weekday& operator+=(const days& d) noexcept;

參數

*d*
要加入的天數。

傳回值

*this + d 的值。 結果會是範圍 [0, 6] 中的模數 7。

operator-=

從減去 天數 weekday

constexpr weekday& operator-=(const days& d) noexcept;

參數

*d*
要減去的天數。

傳回值

*this - d 的值。 結果會是範圍 [0, 6] 中的模數 7。

operator[]

從這個 weekday建立weekday_indexedweekday_last

1) std::chrono::weekday_indexed(*this, index) // C++20
2) std::chrono::weekday_last(*this) // C++20

傳回值

1) std::chrono::weekday_indexed(*this, index)
2) std::chrono::weekday_last(*this)

範例: operator[]

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

using namespace std;
using namespace std::chrono;

int main()
{
    constexpr auto firstMondayInJanuary =
        year_month_day{ Monday[2] / January / 2021y };

    std::cout << firstMondayInJanuary << "\n";

    constexpr auto lastMondayInJanuary = 
        year_month_day{ Tuesday[last] / January / 2021y };
    std::cout << lastMondayInJanuary << "\n";
}
2021-01-11
2021-01-26

工作日常數

(C++20)標頭 <chrono> 會定義下列常數,您可以搭配 weekday 使用,以取得程序代碼的便利性、類型安全性及可維護性。 當 在範圍內時 std::chrono ,這些常數位於範圍中。

// Calendrical constants
inline constexpr std::chrono::weekday Sunday{0};
inline constexpr std::chrono::weekday Monday{1};
inline constexpr std::chrono::weekday Tuesday{2};
inline constexpr std::chrono::weekday Wednesday{3};
inline constexpr std::chrono::weekday Thursday{4};
inline constexpr std::chrono::weekday Friday{5};
inline constexpr std::chrono::weekday Saturday{6};

另請參閱

weekday_last 類別
weekday_indexed 類別
<chrono>
標頭檔參考