year_month_day
クラス
月、年、日を表します。
構文
class year_month_day; // C++20
メンバー
名前 | 説明 |
---|---|
コンストラクター | year_month_day を構築します |
day |
日を返します。 |
month |
月を返します。 |
ok |
year と month の値が有効な範囲内にあるか確認します。 |
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_days
は year_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/
ヘッダー ファイル リファレンス