Classe year_month_day
Rappresenta un mese, un anno e un giorno.
Sintassi
class year_month_day; // C++20
Membri
Nome | Descrizione |
---|---|
Costruttori | Costruire un oggetto year_month_day |
day |
Restituisce il giorno. |
month |
Restituisce il mese. |
ok |
Verificare che i year valori e month siano inclusi nell'intervallo valido. |
operator+= |
Aggiungere il numero specificato di mesi o anni. |
operator-= |
Sottrarre il numero specificato di mesi o anni. |
operator local_days |
Ottenere il numero di giorni dal system_clock periodo a questo year_month_day come local_days . |
operator sys_days |
Ottenere il numero di giorni dal system_clock periodo a questo year_month_day come sys_days . |
year |
Restituisce l'anno. |
Membri non membri
Nome | Descrizione |
---|---|
from_stream |
Analizzare un oggetto year_month_day da un flusso usando il formato specificato |
operator+ |
Aggiungere mesi o anni. |
operator- |
Sottrae mesi o anni. |
operator== |
Determinare se due year_month_day valori sono uguali. |
operator<=> |
Confrontare due year_month_day valori. Gli >, >=, <=, <, != operatori vengono sintetizzati dal compilatore. |
operator<< |
Restituire un oggetto year_month_day a un flusso. |
Requisiti
Intestazione: <chrono>
(da C++20)
Spazio dei nomi: std::chrono
Opzione del compilatore: /std:c++latest
Costruttori
Creare un oggetto 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;
Parametri
d
Valore day
.
dp
Valore sys_days
o local_days
.
m
Valore month
.
y
Valore year
.
ymdl
Valore year_month_day_last
.
Osservazioni:
1) Il costruttore predefinito non inizializza il mese o il giorno.
2) Costruisce un year_month_day
oggetto con l'anno, il mese e il giorno specificati.
3) Costruisce un year_month_day
oggetto con l'anno, il mese e il giorno specificati da ymdl
4) Costruisce un oggetto year_month_day
con la stessa data di dp
.
5) Costruisce un oggetto year_month_day
con la stessa data di dp
ma come se fosse costruito da year_month_day(sys_days(dp.time_since_epoch()))
.
Per informazioni sulla sintassi C++20 usata per specificare le date, vedere operator/
Esempio: Creare un oggetto year_month_day
// 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
Prendi il giorno.
constexpr day day() const noexcept;
Valore restituito
Valore day
.
month
Ottenere il mese.
constexpr month month() const noexcept;
Valore restituito
Valore month
.
operator local_days
Ottenere il numero di giorni dal system_clock
periodo (1/1/1970) a questo year_month_day
come local_days
constexpr explicit operator local_days() const noexcept;
Valore restituito
Se ok()
, restituisce un conteggio di giorni come local_days{sys_days{*this}.time_since_epoch()}
operator sys_days
Ottenere il numero di giorni dal system_clock
periodo (1/1/1970) a questo year_month_day
come sys_days
.
constexpr operator sys_days() const noexcept;
Valore restituito
Se ok()
, restituisce un sys_days
conteggio di giorni compreso tra il sys_days
periodo (1/1/1/1970) e la data contenuta in questo year_month_day
oggetto . Il valore sarà negativo se la data in questo year_month_day
oggetto è precedente all'epoca sys_days
.
Se l'anno e il mese in questo year_month_day
sono ok()
, restituisce sys_days{year/month/1d} + (day-1d)
. In caso contrario, il valore restituito non è specificato.
Un sys_days
oggetto nell'intervallo [days{-12687428}
, days{11248737}
] può essere convertito in e year_month_day
indietro e avere lo stesso valore.
year
Prendi l'anno.
constexpr year year() const noexcept;
Valore restituito
Il year
.
ok
Controllare se il valore anno e mese archiviato in questo year_month_day
intervallo sono entrambi inclusi nell'intervallo valido. Assicura che il giorno sia compreso nell'intervallo [1d, (y/m/last).day()], tenendo conto degli anni intercalati e del diverso numero di giorni in ogni mese.
constexpr bool ok() const noexcept;
Valore restituito
true
se i year_month_day
valori year, month e day sono compresi nell'intervallo valido. In caso contrario, false
.
operator+=
Aggiungere mesi o anni a questo year_month_day
oggetto .
1) constexpr year_month_day& operator+=(const months& dm) noexcept;
2) constexpr year_month_day& operator+=(const years& dy) noexcept;
Parametri
dm
Numero di mesi da aggiungere.
dy
Numero di anni da aggiungere.
Valore restituito
*this
, che riflette il risultato dell'addizione.
Esempio: 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-=
Sottrae mesi o anni da questo year_month_day
oggetto .
1) constexpr year_month_day& operator-=(const months& dm) noexcept;
2) constexpr year_month_day& operator-=(const years& dy) noexcept;
Parametri
dm
Numero di mesi da sottrarre.
dy
Numero di anni da sottrarre.
Valore restituito
*this
, che riflette il risultato della sottrazione.
Esempio: 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
Vedi anche
<chrono>
year
year_month
year_month_day_last
year_month_weekday
year_month_weekday_last
operator/
Riferimento file di intestazione