Namespaces
Variants

std::chrono:: operator+, std::chrono:: operator- (std::chrono::month)

From cppreference.net
Definiert in Header <chrono>
constexpr std:: chrono :: month operator + ( const std:: chrono :: month & m,
const std:: chrono :: months & ms ) noexcept ;
(1) (seit C++20)
constexpr std:: chrono :: month operator + ( const std:: chrono :: months & ms,
const std:: chrono :: month & m ) noexcept ;
(2) (seit C++20)
constexpr std:: chrono :: month operator - ( const std:: chrono :: month & m,
const std:: chrono :: months & ms ) noexcept ;
(3) (seit C++20)
constexpr std:: chrono :: months operator - ( const std:: chrono :: month & m1,
const std:: chrono :: month & m2 ) noexcept ;
(4) (seit C++20)
1,2) Fügt ms. count ( ) Monate zu m hinzu. Der im Ergebnis enthaltene Monatswert wird berechnet, indem zunächst static_cast < long long > ( unsigned ( m ) ) + ( ms. count ( ) - 1 ) ausgewertet wird, es modulo 12 auf einen Integer im Bereich [ 0 , 11 ] reduziert wird und dann 1 addiert wird.
3) Subtrahiert ms. count ( ) Monate von m und gibt das Ergebnis zurück. Entspricht return m + - ms ; .
4) Wenn m1. ok ( ) und m2. ok ( ) beide true sind, gibt einen std::chrono::months -Wert m zurück, sodass m. count ( ) im Bereich [ 0 , 11 ] liegt und m2 + m == m1 . Andernfalls ist der zurückgegebene Wert nicht spezifiziert.

Inhaltsverzeichnis

Rückgabewert

1-3) Ein std::chrono::month , das einen wie oben beschrieben berechneten Monatswert enthält.
4) Ein std::chrono::months , das den Abstand zwischen m1 und m2 darstellt.

Hinweise

Solange die Berechnung keinen Überlauf verursacht, (1-3) liefert immer einen gültigen Monat, selbst wenn m. ok ( ) false ist.

Das Ergebnis der Subtraktion zweier month -Werte ist eine Dauer vom Typ std::chrono::months . Diese Dauer-Einheit repräsentiert die Länge des durchschnittlichen gregorianischen Monats, und die resultierende Dauer steht in keiner Beziehung zur Anzahl der Tage in den spezifischen Monaten, die durch die Operanden dargestellt werden. Zum Beispiel ist std:: chrono :: seconds ( std:: chrono :: April - std:: chrono :: March ) nicht die Anzahl der Sekunden im März ( 2678400s ), sondern 2629746s (30,436875 Tage).

Beispiel

#include <cassert>
#include <chrono>
int main()
{
    std::chrono::month m{6};
    m = m + std::chrono::months(2);
    assert(m == std::chrono::month(8));
    m = m - std::chrono::months(3);
    assert(m == std::chrono::month(5));
    constexpr std::chrono::months ms = std::chrono::month(8) - std::chrono::month(6);
    static_assert(ms == std::chrono::months(2));
}

Siehe auch

erhöht oder verringert den Monat
(öffentliche Elementfunktion)
addiert oder subtrahiert eine Anzahl von Monaten
(öffentliche Elementfunktion)