次の方法で共有


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_daysdp に対応する曜日を計算し、その日を使用して weekday を構築します。
4) std::chrono::local_daysdp に対応する曜日を計算し、その日を使用して 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>
ヘッダー ファイル リファレンス