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_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
。 其行為就像您使用 建立的weekday
weekday(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};