std::chrono:: operator+, std::chrono:: operator- (std::chrono::year_month_weekday)
From ja.cppreference.net
<
cpp
|
chrono
|
year month weekday
1,2)
dm.
count
(
)
ヶ月を
ymwd
が表す日付に加算します。結果は
std::
chrono
::
year_month
(
ymwd.
year
(
)
, ymwd.
month
(
)
)
+
dm
と同じ
year()
および
month()
を持ち、
ymwd
と同じ
weekday()
および
index()
を持ちます。
3,4)
dy.
count
(
)
年を
ymwd
が表す日付に加算する。結果は
std::
chrono
::
year_month_weekday
(
ymwd.
year
(
)
+
dy, ymwd.
month
(
)
, ymwd.
weekday_indexed
(
)
)
と等価である。
5)
指定された日付から
dm.
count
(
)
ヶ月を減算します。
ymwd
で表される日付から
ymwd
+
-
dm
と等価です。
6)
ymwd
が表す日付から
dy.
count
(
)
年を減算します。
ymwd
+
-
dy
と等価です。
std::chrono::years
と
std::chrono::months
の両方に変換可能な期間型の場合、呼び出しが曖昧になる可能性があるときは
years
オーバーロード
(3,4,6)
が優先されます。
注記
ymwd.
ok
(
)
が
true
であっても、
ymwd.
index
(
)
が
5
の場合、結果の
year_month_weekday
は有効な日付を表さない可能性があります。
例
このコードを実行
#include <cassert> #include <chrono> #include <iostream> int main() { auto ymwdi{1/std::chrono::Wednesday[1]/2021}; std::cout << ymwdi << '\n'; ymwdi = std::chrono::years(5) + ymwdi; // 2026年1月の第1水曜日 std::cout << ymwdi << '\n'; assert(static_cast<std::chrono::year_month_day>(ymwdi) == std::chrono::January/7/2026); ymwdi = ymwdi - std::chrono::months(6); // 2025年7月の第1水曜日 std::cout << ymwdi << '\n'; assert(static_cast<std::chrono::year_month_day>(ymwdi) == std::chrono::July/2/2025); }
出力:
2021/Jan/Wed[1] 2026/Jan/Wed[1] 2025/Jul/Wed[1]