Compartir vía


Clase weekday

Representa un día de la semana del calendario gregoriano. Martes, por ejemplo.

Sintaxis

class weekday; // C++20

Comentarios

Un objeto weekday puede contener un valor de [0, 255], pero normalmente contiene un valor [0, 6] para representar un día de la semana. Vea Constantes de weekday más abajo para saber qué constantes se pueden usar con la clase weekday.

Miembros

Nombre Descripción
Constructores Construya un elemento weekday.
c_encoding Obtiene el valor de weekday.
iso_encoding Obtiene el valor ISO 8601 de weekday.
ok Comprueba si el valor de weekday es válido.
operator++ Incrementa el weekday.
operator+= Suma el número especificado de días laborables a weekday.
operator-- Disminuye el elemento weekday.
operator-= Resta el número especificado de días laborables de weekday.
operator[] Crea un objeto weekday_indexed o weekday_last a partir de este objeto weekday.

No miembros

Nombre Descripción
from_stream Analiza un weekday desde la secuencia especificada con el formato indicado.
operator+ Suma el número especificado de días laborables a weekday.
operator- Resta el número especificado de días laborables de weekday o halla la diferencia entre dos objetos weekday.
operator== Determina si dos objetos weekday son iguales.
operator<< Genera un weekday a una secuencia.

Requisitos

Encabezado: <chrono> Desde C++20

Espacio de nombres: std::chrono

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

Constructores

Construye un objeto weekday.

1) weekday() = default; // C++20
2) explicit constexpr weekday(unsigned wd) noexcept; // C++20
3) constexpr weekday(const sys_days& dp) noexcept; // C++20
4) explicit constexpr weekday(const local_days& dp) noexcept; // C++20

Parámetros

dp
Construye un objeto weekday utilizando el día de la semana dp.

wd
Construye un objeto weekday con el valor wd.

Comentarios

1) El constructor predeterminado no inicializa el valor de weekday.
2) Construye un objeto weekday con los valores especificados.
Si wd es 7, weekday se construye con un valor de 0.
No inicialice con valores superiores a 255 o el objeto weekday resultante tendrá un valor no especificado.
3) Calcula qué día de la semana corresponde al valor de std::chrono::sys_days dp, y construye un objeto weekday usando ese día.
4) Calcula qué día de la semana corresponde al valor de std::chrono::local_days dp, y construye un objeto weekday usando ese día. Se comporta como si creara el objeto weekday mediante weekday(std::chrono::sys_days(dp.time_since_epoch())).

Ejemplo: Creación de un objeto weekday

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

using namespace std::chrono;

int main()
{
    weekday wd{ Wednesday };
    weekday wd2{ 3 };
    std::cout << wd << '\n' << wd2;
    
    return 0;
}
Wednesday
Wednesday

c_encoding

constexpr unsigned c_encoding() const noexcept;

Valor devuelto

El valor del día de la semana.

iso_encoding

El valor de día de la semana, pero con domingo (0) se interpreta como 7 según la norma ISO 8601.

constexpr unsigned iso_encoding() const noexcept;

Valor devuelto

El valor del día de la semana.

ok

Compruebe si el valor almacenado en esta instancia de weekday se encuentra en el intervalo válido.

constexpr bool is_leap() const noexcept;

Valor devuelto

true si el valor del día de la semana está en el intervalo [0, 6]. En caso contrario, es false.

operator++

Suma 1 al valor del día de la semana.

1) constexpr std::chrono::weekday& operator++() noexcept;
2) constexpr std::chrono::weekday operator++(int) noexcept;

Valor devuelto

1) Una referencia a *this día de la semana después de que se haya incrementado (un incremento postfijo).
2) Una copia de weekday, antes de que se incrementara (un incremento prefijo).

Ejemplo: operator++

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

using namespace std;
using namespace std::chrono;

int main()
{
    std::chrono::weekday wd{Thursday};

    std::cout << wd << " " << ++wd << "\n"; // constexpr weekday& operator++() noexcept
    std::cout << wd << " " << wd++ << "\n"; // constexpr weekday operator++(int) noexcept
    std::cout << wd << "\n";

    return 0;
}
Thu Fri
Fri Fri
Sat

Comentarios

El valor incrementado es módulo 7. Siempre estará en el intervalo [0, 6].

operator--

Resta 1 del valor de weekday.

1) constexpr std::chrono::weekday& operator--() noexcept;
2) constexpr std::chrono::weekday operator--(int) noexcept;

Valor devuelto

1) Una referencia a *this weekday después de que se haya decrementado (un postfijo decremento).
2) Una copia del antes de weekday que se haya decrementado (un prefijo decremento).

Ejemplo: operator--

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

using namespace std;
using namespace std::chrono;

int main()
{
    weekday y = weekday{Thursday};

    cout << y << " " << --y << "\n"; // constexpr weekday& operator--() noexcept
    cout << y << " " << y-- << "\n"; // constexpr weekday operator--(int) noexcept
    cout << y << "\n";

    return 0;
}
Thu Wed
Wed Wed
Tue

Comentarios

Si el resultado reducido es menor que 0, se establece en 6.

operator+=

Suma días a weekday.

constexpr weekday& operator+=(const days& d) noexcept;

Parámetros

*d*
El número de días que se van a agregar.

Valor devuelto

El valor de *this + d. El resultado será módulo 7, en el intervalo [0, 6].

operator-=

Resta días de weekday.

constexpr weekday& operator-=(const days& d) noexcept;

Parámetros

*d*
Número de días que se va a restar.

Valor devuelto

El valor de *this - d. El resultado será módulo 7, en el intervalo [0, 6].

operator[]

Crea un objeto weekday_indexed o weekday_last a partir de este objeto weekday.

1) std::chrono::weekday_indexed(*this, index) // C++20
2) std::chrono::weekday_last(*this) // C++20

Valor devuelto

1) std::chrono::weekday_indexed(*this, index)
2) std::chrono::weekday_last(*this)

Ejemplo: operator[]

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

using namespace std;
using namespace std::chrono;

int main()
{
    constexpr auto firstMondayInJanuary =
        year_month_day{ Monday[2] / January / 2021y };

    std::cout << firstMondayInJanuary << "\n";

    constexpr auto lastMondayInJanuary = 
        year_month_day{ Tuesday[last] / January / 2021y };
    std::cout << lastMondayInJanuary << "\n";
}
2021-01-11
2021-01-26

Constantes de weekday

(C++20) El encabezado <chrono> define las siguientes constantes que puede usar con weekday para mayor comodidad, seguridad de tipos y mantenimiento del código. Estas constantes están dentro del ámbito si std::chrono está dentro del ámbito.

// Calendrical constants
inline constexpr std::chrono::weekday Sunday{0};
inline constexpr std::chrono::weekday Monday{1};
inline constexpr std::chrono::weekday Tuesday{2};
inline constexpr std::chrono::weekday Wednesday{3};
inline constexpr std::chrono::weekday Thursday{4};
inline constexpr std::chrono::weekday Friday{5};
inline constexpr std::chrono::weekday Saturday{6};

Consulte también

Clase weekday_last
Clase weekday_indexed
<chrono>
Referencia de archivos de encabezado