std::chrono:: operator+, std::chrono:: operator- (std::chrono::weekday)
From cppreference.net
|
Definiert in Header
<chrono>
|
||
|
constexpr
std::
chrono
::
weekday
operator
+
(
const
std::
chrono
::
weekday
&
wd,
const std:: chrono :: days & d ) noexcept ; |
(1) | (seit C++20) |
|
constexpr
std::
chrono
::
weekday
operator
+
(
const
std::
chrono
::
days
&
d,
const std:: chrono :: weekday & wd ) noexcept ; |
(2) | (seit C++20) |
|
constexpr
std::
chrono
::
weekday
operator
-
(
const
std::
chrono
::
weekday
&
wd,
const std:: chrono :: days & d ) noexcept ; |
(3) | (seit C++20) |
|
constexpr
std::
chrono
::
days
operator
-
(
const
std::
chrono
::
weekday
&
wd1,
const std:: chrono :: weekday & wd2 ) noexcept ; |
(4) | (seit C++20) |
1,2)
Fügt
d.
count
(
)
Tage zu
wd
hinzu. Der in dem Ergebnis enthaltene Wochentagswert wird berechnet, indem zunächst
static_cast
<
long
long
>
(
wd.
c_encoding
(
)
)
+
d.
count
(
)
ausgewertet und dann modulo 7 auf einen Integer im Bereich
[
0
,
6
]
reduziert wird.
3)
Subtrahiert
d.
count
(
)
Tage von
wd
. Entspricht
return
wd
+
-
d
;
.
4)
Wenn
wd1.
ok
(
)
und
wd2.
ok
(
)
beide
true
sind, gibt einen
std::chrono::days
-Wert
d
zurück, so dass
d.
count
(
)
im Bereich
[
0
,
6
]
liegt und
wd2
+
d
==
wd1
. Andernfalls ist der zurückgegebene Wert nicht spezifiziert.
Inhaltsverzeichnis |
Rückgabewert
1-3)
Ein
std::chrono::weekday
, der einen wie oben beschrieben berechneten Wochentagswert enthält.
4)
Ein
std::chrono::days
, der den Abstand zwischen
wd1
und
wd2
darstellt.
Hinweise
Solange die Berechnung keinen Überlauf verursacht,
(1-3)
liefert immer einen gültigen
weekday
selbst wenn
wd.
ok
(
)
false
ist.
Beispiel
Diesen Code ausführen
#include <chrono> #include <iostream> int main() { std::cout << std::boolalpha; std::chrono::weekday wd{4}; wd = wd + std::chrono::days(2); std::cout << (wd == std::chrono::weekday(6)) << ' ' << (wd == std::chrono::Saturday) << ' '; wd = wd - std::chrono::days(3); std::cout << (wd == std::chrono::weekday(3)) << ' ' << (wd == std::chrono::Wednesday) << ' '; wd = std::chrono::Tuesday; wd = wd + std::chrono::days{8}; // (((2 + 8) == 10) % 7) == 3; std::cout << (wd == std::chrono::Wednesday) << ' '; wd = wd + (std::chrono::Sunday - std::chrono::Thursday); // (3 + 3) == 6 std::cout << (wd == std::chrono::Saturday) << '\n'; }
Ausgabe:
true true true true true true
Siehe auch
|
Inkrementiert oder dekrementiert den Wochentag
(öffentliche Elementfunktion) |
|
|
Addiert oder subtrahiert eine Anzahl von Tagen
(öffentliche Elementfunktion) |