year_month_weekday
クラス
月の特定の年、月、および n 番目の曜日を表します。
構文
class year_month_weekday; // C++20
解説
year_month_weekday
では、年と月指向の算術演算がサポートされますが、日指向の算術演算はサポートされません。 日指向の算術演算の場合は、日指向の算術演算をサポートする sys_days
変換を使用して、sys_days
に変換します。
year_month_weekday
は、普通のコピー可能な、標準レイアウト クラス型です。
メンバー
名前 | 説明 |
---|---|
Constructor |
指定した月と曜日を使用して year_month_weekday を構成します。 |
index |
曜日のインデックスを取得します。 |
month |
月の値を取得します。 |
ok |
year_month_weekday が有効かどうかを確認します。 |
operator+= |
指定した月数または年数を加算します。 |
operator-= |
指定した月数または年数を減算します。 |
operator local_days |
system_clock エポックからこの year_month_weekday への日数を local_days として取得します。 |
operator sys_days |
system_clock エポックからこの year_month_weekday への日数を sys_days として取得します。 |
weekday |
曜日を取得します。 |
weekday_indexed |
この year_month_weekday に格納されている [weekday_indexed ] を取得します。 |
year |
年を取得します。 |
非メンバー
名前 | 説明 |
---|---|
operator+ |
月または年を加算します。 |
operator- |
月または年を減算します。 |
operator== |
2 つの year_month_weekday 値が等しいかどうかを判断します。 |
operator<< |
指定したストリームに year_month_weekday を出力します。 |
要件
Header: <chrono>
(C++20 以降)
名前空間: std::chrono
コンパイラ オプション: /std:c++latest
Constructor
year_month_weekday
を構築します。
// 1)
year_month_weekday() = default
// 2)
constexpr year_month_weekday(const year& y, const month& m, const weekday_indexed& wdi) noexcept;
// 3)
constexpr explicit year_month_weekday(const local_days& dp) noexcept;
// 4)
constexpr year_month_weekday(const sys_days& dp) noexcept;
パラメーター
m
month
の値です。
dp
sys_days
または local_days
wdi
weekday
の値です。
y
year
の値です。
解説: コンストラクター
1) 既定のコンストラクターは、いずれのフィールドも初期化しません。
2) 指定された year
、month
、および weekday_indexed
に対応する year_month_weekday
を構築します。
3) sys_days{dp.time_since_epoch()}
によって表現される日付に対応する year_month_weekday
を構築します。
4) dp
によって表現される日付に対応する year_month_weekday
を構築します。 ok()
が true
であるすべての year_month_weekday
(ymdl) について、operator==
と year_month_weekday{sys_days{ymdl}}
の比較は true
になります。
日付の指定に使用される C++20 構文の詳細については、以下を参照してください。 operator/
例: year_month_weekday
を作成する
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_weekday ymw{1997y / January / Wednesday[1]};
std::cout << ymw << '\n';
return 0;
}
1997/Jan/Wed[1]
index
この year_month_weekday
で曜日のインデックスを取得します。
constexpr unsigned index() const noexcept;
戻り値
曜日のインデックス。 たとえば、曜日が週の最初の水曜日の場合、インデックスは 1 になります。
month
月の値を取得します。
constexpr month month() const noexcept;
戻り値
month
の値です。
ok
この year_month_weekday
に格納されている値が有効かどうかを確認します。 この関数が true
を返すには、この year_month_weekday
に格納されている year
、month
、weekday_index
はすべて ok
である必要があります。 それ以外の場合、false
を返します。
constexpr bool ok() const noexcept;
戻り値
year_month_weekday
値が有効な場合は true
。 それ以外の場合は false
。
month
が有効で、weekday_indexed
値が有効な場合、year_month_weekday
は有効です。
operator+=
この year_month_weekday
に月または年を追加します。
1) constexpr year_month_weekday& operator+=(const months& m) noexcept;
2) constexpr year_month_weekday& operator+=(const years& y) noexcept;
パラメーター
m
加算する月数。
y
加算する年数。
戻り値
加算の結果を反映する *this
。
例: operator+=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_weekday ymw{1997y / January / Wednesday[1]};
std::cout << ymw << '\n';
ymw += months{1};
ymw += years{1};
std::cout << ymw << '\n';
return 0;
}
1997/Jan/Wed[1]
1998/Feb/Wed[1]
operator-=
この year_month_weekday
から月または年を減算します。
1) constexpr year_month_weekday& operator-=(const months& m) noexcept;
2) constexpr year_month_weekday& operator-=(const years& y) noexcept;
パラメーター
m
減算する月数。
y
減算する年数。
戻り値
減算の結果を反映する *this
。
例: operator-=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
year_month_weekday ymw{1997y / January / Wednesday[1]};
std::cout << ymw << '\n';
ymw -= months{1};
ymw -= years{1};
std::cout << ymw << '\n';
return 0;
}
1997/Jan/Wed[1]
1995/Dec/Wed[1]
operator local_days
system_clock
エポック (1/1/1970) からこの year_month_weekday
への日数を 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()
の場合、year()/month()
の最初の weekday()
から (index() - 1) * 7
日後の日付を表す sys_days
を返します。 index()
が 0
の場合、返される sys_days
は、year()/month()
の最初の weekday()
の 7 日前の日付を表します。
weekday
この year_month_weekday
に格納されている weekday_indexed
に格納されている weekday
を取得します。
constexpr weekday weekday() const noexcept;
戻り値
weekday
の値です。
weekday_indexed
この year_month_weekday
に格納されている weekday_indexed
を取得します。
constexpr weekday_indexed weekday_indexed() const noexcept;
戻り値
weekday_indexed
の値です。
year
年の値を取得します。
constexpr year year() const noexcept;
戻り値
year
の値です。
関連項目
<chrono>
year
year_month
year_month_day
year_month_day_last
year_month_weekday_last
operator/
ヘッダー ファイル リファレンス