Compartir a través de


Clase year_month_day

Representa un mes, año y día.

Sintaxis

class year_month_day; // C++20

Miembros

Nombre Descripción
Constructores Construyen un elemento year_month_day
day Devuelve el día.
month Devuelve el mes.
ok Verifica que los valores year y month están en el intervalo válido.
operator+= Suma el número especificado de meses o años.
operator-= Reste el número especificado de meses o años.
operator local_days Obtiene el recuento de días desde la época system_clock hasta year_month_day como local_days.
operator sys_days Obtiene el recuento de días desde la época system_clock hasta year_month_day como sys_days.
year Devuelve el año.

No miembros

Nombre Descripción
from_stream Analiza un year_month_day desde la secuencia especificada con el formato especificado
operator+ Sume meses o años.
operator- Reste meses o años.
operator== Determine si dos valores year_month_day son iguales.
operator<=> Compare dos valores year_month_day. El compilador sintetiza los operadores >, >=, <=, <, !=.
operator<< Genera un year_month_day a una secuencia.

Requisitos

Encabezado: <chrono> (desde C++20)

Espacio de nombres: std::chrono

Opción del compilador: /std:c++latest

Constructores

Construya un elemento 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;

Parámetros

d Un valor day.

dp Un valor sys_days o local_days.

m Un valor month.

y
Valor year.

ymdl Un valor year_month_day_last.

Comentarios

1) El constructor predeterminado no inicializa el mes o el día.
2) Construye un year_month_day objeto con el año, el mes y el día especificados.
3) Construye un year_month_day objeto con el año, mes y día especificados a partir de ymdl
4) Construye un year_month_day con la misma fecha que dp.
5) Construye un year_month_day objeto con la misma fecha que dp pero como si se construyese por year_month_day(sys_days(dp.time_since_epoch())).

Para obtener información sobre la sintaxis de C++20 usada para especificar fechas, consulte operator/

Ejemplo: Creación de un objeto 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

Obtiene el día.

constexpr day day() const noexcept;

Valor devuelto

Valor de tipo day.

month

Obtiene el mes.

constexpr month month() const noexcept;

Valor devuelto

Valor de tipo month.

operator local_days

Obtiene el recuento de días desde la época system_clock (1/1/1970) hasta year_month_day como local_days.

constexpr explicit operator local_days() const noexcept;

Valor devuelto

Si es ok(), devuelve un recuento de días como local_days{sys_days{*this}.time_since_epoch()}.

operator sys_days

Obtiene el recuento de días desde la época system_clock (1/1/1970) hasta year_month_day como sys_days.

constexpr operator sys_days() const noexcept;

Valor devuelto

Si es ok(), devuelve un objeto sys_days que contiene un recuento de días desde la época sys_days (1/1/1970) hasta la fecha que se mantiene en year_month_day. El valor será negativo si la fecha de year_month_day es anterior a la época sys_days.

Si el año y el mes de year_month_day son ok(), devuelve sys_days{year/month/1d} + (day-1d). De lo contrario, no se especifica el valor devuelto.

Un sys_days en el intervalo [days{-12687428}, days{11248737}] se puede convertir en year_month_day y volver a tener el mismo valor.

year

Obtiene el año.

constexpr year year() const noexcept;

Valor devuelto

El year.

ok

Comprueba si el valor de año y mes almacenado en este year_month_day se encuentren en el intervalo válido. Garantiza que el día se encuentra en el intervalo [1d, (y/m/last).day()], teniendo en cuenta años bisiestos y el número diferente de días de cada mes.

constexpr bool ok() const noexcept;

Valor devuelto

true si los valores de año, mes y día year_month_day están en el intervalo válido. En caso contrario, es false.

operator+=

Agrega meses o años a este year_month_day.

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

Parámetros

dm
Número de meses que se van a agregar.

dy
Número de años que se van a agregar.

Valor devuelto

*this, que refleja el resultado de la adición.

Ejemplo: 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-=

Resta meses o años de este year_month_day.

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

Parámetros

dm
Número de meses que se van a restar.

dy
Número de años que se va a restar.

Valor devuelto

*this, que refleja el resultado de la resta.

Ejemplo: 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

Consulte también

<chrono>
year
year_month
year_month_day_last
year_month_weekday
year_month_weekday_last
operator/
Referencia de archivos de encabezado