Freigeben über


year_month_day-Klasse

Stellt einen Monat, ein Jahr und einen Tag dar.

Syntax

class year_month_day; // C++20

Member

Name Beschreibung
Konstruktoren Erstellen eines year_month_day
day Gibt den Tag zurück.
month Gibt den Monat zurück.
ok Überprüfen Sie, ob sich die year Werte month im gültigen Bereich befinden.
operator+= Fügen Sie die angegebene Anzahl von Monaten oder Jahren hinzu.
operator-= Subtrahieren Sie die angegebene Anzahl von Monaten oder Jahren.
operator local_days Rufen Sie die Anzahl der Tage von der system_clock Epoche bis zu dieser year_month_day als local_days.
operator sys_days Rufen Sie die Anzahl der Tage von der system_clock Epoche bis zu dieser year_month_day als sys_days.
year Gibt das Jahr zurück.

Nicht-Member

Name Beschreibung
from_stream Analysieren eines year_month_day Datenstroms mithilfe des angegebenen Formats
operator+ Fügen Sie Monate oder Jahre hinzu.
operator- Subtrahieren Sie Monate oder Jahre.
operator== Bestimmen Sie, ob zwei year_month_day Werte gleich sind.
operator<=> Vergleichen Sie zwei year_month_day Werte. Die >, >=, <=, <, != Operatoren werden vom Compiler synthetisiert.
operator<< Ausgabe eines year_month_day Datenstroms.

Anforderungen

Header: <chrono> (seit C++20)

Namespace:std::chrono

Compileroption: /std:c++latest

Konstruktoren

Erstellen Sie ein year_month_day.

1) year_month_day() = default;
2) constexpr year_month_day(const year& y, const month& m, day& d) noexcept;
3) constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
4) constexpr year_month_day(const sys_days& dp) noexcept;
5) constexpr explicit year_month_day(const local_days& dp) noexcept;

Parameter

d Ein day Wert.

dp A sys_days oder local_days Wert.

m Ein month Wert.

y
Ein year-Wert.

ymdl Ein year_month_day_last Wert.

Hinweise

1) Der Standardkonstruktor initialisiert den Monat oder Tag nicht.
2) Erstellt ein year_month_day mit dem angegebenen Jahr, Monat und Tag.
3) Erstellt ein year_month_day mit dem angegebenen Jahr, Monat und Tag von ymdl
4) Erstellt ein year_month_day mit demselben Datum wie dp.
5) Erstellt ein year_month_day mit demselben Datum wie dp , aber wie von year_month_day(sys_days(dp.time_since_epoch())).

Informationen zur C++20-Syntax, die zum Angeben von Datumsangaben verwendet wird, finden Sie unter operator/

Beispiel: Erstellen einer year_month_day-Klasse

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day ymd{ April / 4 / 1975 };
    std::cout << ymd;
    return 0;
}
1975-04-04

day

Rufen Sie den Tag ab.

constexpr day day() const noexcept;

Rückgabewert

Der day-Wert.

month

Rufen Sie den Monat ab.

constexpr month month() const noexcept;

Rückgabewert

Der month-Wert.

operator local_days

Die Anzahl der Tage aus der system_clock Epoche (1/1/1970) auf diese year_month_day abrufen local_days

constexpr explicit operator local_days() const noexcept;

Rückgabewert

Wenn ok(), gibt eine Anzahl von Tagen als local_days{sys_days{*this}.time_since_epoch()}

operator sys_days

Rufen Sie die Anzahl der Tage aus der system_clock Epoche (1.1.1970) als year_month_day sys_days.

constexpr operator sys_days() const noexcept;

Rückgabewert

Wenn ok(), gibt eine sys_days Anzahl von Tagen aus der sys_days Epoche (1/1/1/1970) an das Datum zurück, das in diesem year_month_day. Der Wert wird negativ sein, wenn das Datum in dieser year_month_day Zeit vor der sys_days Epoche liegt.

Wenn das Jahr und der Monat in diesem year_month_day Wert sind ok(), wird zurückgegeben sys_days{year/month/1d} + (day-1d). Andernfalls ist der zurückgegebene Wert nicht angegeben.

A sys_days im Bereich [days{-12687428}, days{11248737}] kann in ein year_month_day und zurück konvertiert werden und denselben Wert aufweisen.

year

Ruft das Jahr ab.

constexpr year year() const noexcept;

Rückgabewert

Die year.

ok

Überprüfen Sie, ob sich der darin year_month_day gespeicherte Wert für Jahr und Monat sowohl im gültigen Bereich befindet. Stellt sicher, dass sich der Tag im Bereich [1d, (y/m/last).day()], für Schaltjahre und die unterschiedliche Anzahl von Tagen in jedem Monat befindet.

constexpr bool ok() const noexcept;

Rückgabewert

true wenn sich die year_month_day Werte für Jahr, Monat und Tag im gültigen Bereich befinden. Andernfalls false.

operator+=

Fügen Sie dieser year_month_dayEigenschaft Monate oder Jahre hinzu.

1) constexpr year_month_day& operator+=(const months& dm) noexcept;
2) constexpr year_month_day& operator+=(const years& dy) noexcept;

Parameter

dm
Die Anzahl der hinzuzufügenden Monate.

dy
Die Anzahl der hinzuzufügenden Jahre.

Rückgabewert

*this, das das Ergebnis der Hinzufügung widerspiegelt.

Beispiel: operator+=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day ymd{June / 1d / 2021y};

    std::cout << ymd << '\n';

    ymd += months{2};
    ymd += years{1};

    std::cout << ymd;
    
    return 0;
}
2021-06-01
2022-08-01

operator-=

Subtrahieren Sie Monate oder Jahre von diesem year_month_day.

1) constexpr year_month_day& operator-=(const months& dm) noexcept;
2) constexpr year_month_day& operator-=(const years& dy) noexcept;

Parameter

dm
Die Anzahl der Monate, die subtrahiert werden sollen.

dy
Die Anzahl der Jahre, die subtrahiert werden sollen.

Rückgabewert

*this, das das Ergebnis der Subtraktion widerspiegelt.

Beispiel: operator-=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_day ymd{June / 1d / 2021y};

    std::cout << ymd << '\n';

    ymd -= months{2};
    ymd -= years{1};

    std::cout << ymd;
    
    return 0;
}
2021-06-01
2020-04-01

Siehe auch

<chrono>
year
year_month
year_month_day_last
year_month_weekday
year_month_weekday_last
operator/
Headerdateienreferenz