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_day
Eigenschaft 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