次の方法で共有


day クラス

月の日付を表します。 たとえば、ある月の 25 日などです。

構文

class day; // C++20

解説

day は、通常、[1, 31] の範囲の値を保持します。 負でない値をこの範囲外に保持することはできますが、[0, 255] の範囲内にない場合、動作は指定されません。

メンバー

名前 説明
コンストラクター day を構築します。
ok 日付の値が有効な範囲 [1, 31] 内にあることを確認します。
operator++ この day をインクリメントします。
operator+= 指定された日数をこの day に追加します。
operator-- day をデクリメントします。
operator-= 指定された日数をこの day から減算します
operator unsigned 日付の値を符号なし整数として取得します。

非メンバー

名前 説明
from_stream 指定した形式を使用して、指定したストリームから day を解析します。
operator+ 指定された日数をこの day に追加して、新しい day オブジェクトを返します。
operator- 指定した日数をこの day から減算し、新しい day オブジェクトを返します。
operator== 2 つの day インスタンスが等しいかどうかを判断します。
operator<=> この day を別の day と比較します。 演算子 >, >=, <=, <, != はコンパイラによって合成されます。
operator<< 指定したストリームに day を出力します。
operator""d 月の日付に対して day リテラルを作成します。

必要条件

ヘッダー:<chrono> (C++20 以降)

名前空間std::chrono:

コンパイラ オプション:/std:c++latest

コンストラクター

day を構築します。

1) day() = default;
2) explicit constexpr day(unsigned d) noexcept;

パラメーター

d
day を値 d を使用して構築します。

解説

1) 既定のコンストラクターは、日付の値を初期化しません。
2) d に初期化された日の値を使用して、day を構築します。

例: day を作成する

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

using namespace std::chrono;

int main()
{
    day d{1}; // day 1
    day d2 = 2d; // day 2

    std::cout << d << ", " << d2;

    return 0;
}
01, 02

ok

この day に格納された値の範囲が有効であるかを確認します。

constexpr bool ok() const noexcept;

戻り値

日の値が [1, 31] の範囲内にある場合は true です。 それ以外の場合は false

operator++

日付値に 1 をインクリメントします。

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

戻り値

1) インクリメント後*thisday の参照 (後置インクリメント)。
2) インクリメント前day のコピー (前置インクリメント)。

例: operator++

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

using namespace std::chrono;

int main()
{
    day d{1};

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

    return 0;
}
01 02
02 02
03

解説

インクリメントされた結果が [0, 255] の範囲外の場合、格納されている値は指定されません。

operator--

日付の値から 1 を減算します。

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

戻り値

1) デクメント後*this の日への参照 (後置デクリメント)。
2) デクリメント前*day のコピー (前置デクリメント)。

例: operator--

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

int main()
{
    day d{5};
    std::cout << d << " " << --d << "\n"; // constexpr day& operator--() noexcept
    std::cout << d << " " << d-- << "\n"; // constexpr day operator--(int) noexcept
    std::cout << d << "\n";

    return 0;
}
05 04
04 04
03

解説

デクリメントされた結果が [0, 255] の範囲外の場合、格納されている値は指定されません。

operator+=

この day に日数を加算します。

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

パラメーター

d
追加する日数です。

戻り値

*this

結果が [0, 255] の範囲外の場合、格納されている値は指定されません。

operator-=

この day から日を減算します。

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

パラメーター

d
減算する日数。

戻り値

*this= 結果が [0, 255] の範囲外の場合、格納されている値は指定されません。

operator unsigned

day 値を取得します。

explicit constexpr operator unsigned() const noexcept;

戻り値

day タグの値

例: operator unsigned()

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

int main()
{
    chrono::day d{14d};
    unsigned dayValue = static_cast<unsigned>(d);
    cout << dayValue << "\n";
    
    return 0;
}
14

関連項目

<chrono>
month_day クラス
month_day_last クラス
year_month_day
year_month_day_last
ヘッダー ファイル リファレンス