Condividi tramite


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_dayoggetto . 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_dayoggetto .

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_dayoggetto .

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