代表公曆中的星期幾。 例如,星期二。
語法
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_indexed或weekday_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_days 值 dp,並使用該天建構 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_indexed或weekday_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};