次の方法で共有


year_month_day クラス

月、年、日を表します。

構文

class year_month_day; // C++20

メンバー

名前 説明
コンストラクター year_month_day を構築します
day 日を返します。
month 月を返します。
ok yearmonth の値が有効な範囲内にあるか確認します。
operator+= 指定した月数または年数を加算します。
operator-= 指定した月数または年数を減算します。
operator local_days system_clock エポックからこの year_month_day への日数を local_days として取得します。
operator sys_days system_clock エポックからこの year_month_day への日数を sys_days として取得します。
year 年を返します。

非メンバー

名前 説明
from_stream 指定した形式を使用して、ストリームから year_month_day を解析します。
operator+ 月または年を加算します。
operator- 月または年を減算します。
operator== 2 つの year_month_day 値が等しいかどうかを判断します。
operator<=> 2 つの year_month_day 値を比較します。 演算子 >, >=, <=, <, != はコンパイラによって合成されます。
operator<< year_month_day をストリームに出力します。

要件

Header: <chrono> (C++20 以降)

名前空間: std::chrono

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

コンストラクター

year_month_day を構築します。

1) year_month_day() = default;
2) constexpr year_month_day(const year& y, const month& m, day& d) noexcept;
3) constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
4) constexpr year_month_day(const sys_days& dp) noexcept;
5) constexpr explicit year_month_day(const local_days& dp) noexcept;

パラメーター

d A day 値。

dp A sys_days または local_days 値。

m A month 値。

y
year 値。

ymdl A year_month_day_last 値。

解説

1) 既定のコンストラクターでは、月または日は初期化されません。
2) 年、月、日を指定して year_month_day を構築します。
3) 指定した年、月、日の year_month_day を構築します。 ymdl
4) dpと同じ日付のyear_month_dayを構築します。
5) dpと同じ日付でyear_month_dayを構築しますが、year_month_day(sys_days(dp.time_since_epoch()))によって構築される場合と同様です。

日付の指定に使用される C++20 構文の詳細については、以下を参照してください。 operator/

例: year_month_day を作成する

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

using namespace std::chrono;

int main()
{
    year_month_day ymd{ April / 4 / 1975 };
    std::cout << ymd;
    return 0;
}
1975-04-04

day

日を取得します。

constexpr day day() const noexcept;

戻り値

day の値です。

month

月を取得します。

constexpr month month() const noexcept;

戻り値

month の値です。

operator local_days

system_clock エポック (1/1/1970) からこの year_month_day への日数を local_days として取得します

constexpr explicit operator local_days() const noexcept;

戻り値

ok() の場合、日数を local_days{sys_days{*this}.time_since_epoch()} として返します

operator sys_days

system_clock エポック (1/1/1970) からこの year_month_day への日数を sys_days として取得します。

constexpr operator sys_days() const noexcept;

戻り値

ok() の場合、sys_days エポック (1970 年 1 月 1 日) からこの year_month_day で保持されている日付までの日数を保持する sys_days を返します。 この year_month_day の日付が sys_days エポックより前の場合、値は負になります。

この year_month_day の年と月が ok() の場合、sys_days{year/month/1d} + (day-1d) を返します。 それ以外の場合、返される値は指定されません。

範囲 [days{-12687428},days{11248737}] 内の sys_daysyear_month_day に変換して戻すことができ、同じ値を持つことができます。

year

年を取得します。

constexpr year year() const noexcept;

戻り値

year

ok

この year_month_day に格納されている年と月の値の両方が有効な範囲内にあるか確認します。 閏年および各月の異なる日数を考慮して、日が [1d, (y/m/last) .day ()] の範囲内であることを確認します。

constexpr bool ok() const noexcept;

戻り値

year_month_day の年、月、日の値が有効な範囲内にある場合は true です。 それ以外の場合は false

operator+=

この year_month_day に月または年を追加します。

1) constexpr year_month_day& operator+=(const months& dm) noexcept;
2) constexpr year_month_day& operator+=(const years& dy) noexcept;

パラメーター

dm
加算する月数。

dy
加算する年数。

戻り値

加算の結果を反映する *this

例: operator+=

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

using namespace std::chrono;

int main()
{
    year_month_day ymd{June / 1d / 2021y};

    std::cout << ymd << '\n';

    ymd += months{2};
    ymd += years{1};

    std::cout << ymd;
    
    return 0;
}
2021-06-01
2022-08-01

operator-=

この year_month_day から月または年を減算します。

1) constexpr year_month_day& operator-=(const months& dm) noexcept;
2) constexpr year_month_day& operator-=(const years& dy) noexcept;

パラメーター

dm
減算する月数。

dy
減算する年数。

戻り値

減算の結果を反映する *this

例: operator-=

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

using namespace std::chrono;

int main()
{
    year_month_day ymd{June / 1d / 2021y};

    std::cout << ymd << '\n';

    ymd -= months{2};
    ymd -= years{1};

    std::cout << ymd;
    
    return 0;
}
2021-06-01
2020-04-01

関連項目

<chrono>
year
year_month
year_month_day_last
year_month_weekday
year_month_weekday_last
operator/
ヘッダー ファイル リファレンス