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 から指定された曜日数を引くか、2 つの weekday オブジェクトの差を見つけます。 |
operator== |
2 つの weekday オブジェクトが等しいかどうかを判断します。 |
operator<< |
weekday をストリームに出力します。 |
要件
Header: <chrono>
Since 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
曜日 dp
を使用して weekday
を構築します。
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(std::chrono::sys_days(dp.time_since_epoch()))
を使用して weekday
を作成したように動作します 。
例: 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
曜日の値ですが、Sunday (0) は ISO 8601 に基づいて 7 と解釈されます。
constexpr unsigned iso_encoding() const noexcept;
戻り値
曜日の値。
ok
この weekday
に格納された値の範囲が有効であるかを確認します。
constexpr bool is_leap() const noexcept;
戻り値
曜日の値が [0, 6] の範囲内にある場合は true
です。 それ以外の場合は 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
の値。 結果は 7 を法とし、 [0, 6] の範囲内です。
operator-=
weekday
から日を減算します。
constexpr weekday& operator-=(const days& d) noexcept;
パラメーター
*d*
減算する日数。
戻り値
*this - d
の値。 結果は 7 を法とし、 [0, 6] の範囲内です。
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};
関連項目
weekday_last
クラス
weekday_indexed
クラス
<chrono>
ヘッダー ファイル リファレンス