- chrono[meta header]
- std::chrono[meta namespace]
- class[meta id-type]
- cpp20[meta cpp]
namespace std::chrono {
class year_month_weekday;
}
year_month_weekday
は、年、月、N回目の曜日を表すカレンダー表現のためクラスである。
このクラスは、年、および月に関する演算に対応している。ただし、日に関する演算はできない。日を求めるday()
メンバ関数は持っておらず、日はsys_days
への変換演算子でより効率的に求めることができる。
このクラスは等値比較ができ、EqualityComparableの要件を満たす。
このクラスは、トリビアルコピー可能で、かつスタンダードレイアウト型である。
名前 |
説明 |
対応バージョン |
(constructor) |
コンストラクタ |
C++20 |
year_month_weekday& operator=(const year_month_weekday&) = default; year_month_weekday& operator=(year_month_weekday&&) = default; |
代入演算子 |
C++20 |
名前 |
説明 |
対応バージョン |
ok |
値が範囲に収まっているか判定する |
C++20 |
名前 |
説明 |
対応バージョン |
operator== |
等値比較を行う |
C++20 |
bool operator!=(const year_month_weekday&, const year_month_weekday&) noexcept; |
非等値比較を行う (== により使用可能) |
C++20 |
名前 |
説明 |
対応バージョン |
template <class T> struct hash; |
hash クラスの先行宣言 |
C++26 |
template<> struct hash<chrono::year_month_weekday>; |
hash クラスのyear_month_weekday に対する特殊化 |
C++26 |
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
// すべて2020年3月の2回目の日曜日を表す
year_month_weekday date1 = 2020y/3/Sunday[2];
year_month_weekday date2 = 2020y/March/Sunday[2];
year_month_weekday date3 = March/Sunday[2]/2020y;
year_month_weekday date4 = March/Sunday[2]/2020;
// 各カレンダー要素のコンストラクタはexplicitなので、
// 指定順は年、月、N回目の曜日で決まっているが、int値は指定できない
year_month_weekday date5{2020y, March, Sunday[2]};
std::cout << date5 << std::endl;
// 日単位のシステム時間に変換
sys_days sd{date5};
std::cout << sd << std::endl;
// 年月日に変換
year_month_day ymd{sd};
std::cout << ymd << std::endl;
}
- 2020y[link year/op_y.md]
- March[link month_constants.md]
- Sunday[link weekday_constants.md]
- sys_days[link sys_time.md]
- year_month_day[link year_month_day.md]
2020/Mar/Sun[2]
2020-03-08
2020-03-08
- Clang: 8.0 (出力ストリームなし) [mark verified]
- GCC: 11.1 (出力ストリームなし) [mark verified]
- Visual C++: 2019 Update 3 [mark noimpl]