Classe weekday

Representa um dia da semana no calendário gregoriano. Por exemplo, terça-feira.

Sintaxe

class weekday; // C++20

Comentários

Um weekday pode conter um valor de [0, 255], mas normalmente contém um valor [0, 6] para representar um dia da semana. Confira Constantes de dia da semana, abaixo, para obter constantes que você pode usar com a classe weekday.

Membros

Nome Descrição
Construtores Construa um weekday.
c_encoding Obtenha o valor weekday.
iso_encoding Obtenha o valor weekday ISO 8601.
ok Verifique se o valor weekday é válido.
operator++ Incremente o weekday.
operator+= Adicione o número especificado de dias da semana a este weekday.
operator-- Reduzir o weekday.
operator-= Subtrair o número especificado de dias da semana deste weekday.
operator[] Crie um weekday_indexed ou weekday_last deste weekday.

Não membros

Nome Descrição
from_stream Analise um weekday do fluxo fornecido usando o formato especificado.
operator+ Adicione o número especificado de dias da semana a este weekday.
operator- Subtraia o número especificado de dias da semana deste weekday ou localize a diferença entre dois objetos weekday.
operator== Determine se dois objetos weekday são iguais.
operator<< Gere um weekday para um fluxo.

Requisitos

Cabeçalho: <chrono> Desde o C++20

Namespace: std::chrono

Opção do compilador: /std:c++latest

Construtores

Constrói um 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
Construa um weekday uso o dia da semana dp.

wd
Construa um weekday com valor wd.

Comentários

1) O construtor padrão não inicializa o valor do dia da semana.
2) Construa um weekday com o valor especificado.
Se wd for 7, o weekday será construído com um valor 0.
Não inicialize com valores acima de 255 ou o weekday resultante terá um valor não especificado.
3) Calcula qual dia da semana corresponde ao valor std::chrono::sys_days dp e constrói um weekday usando esse dia.
4) Calcula qual dia da semana corresponde ao valor std::chrono::local_days dp e constrói um weekday usando esse dia. Ele se comporta como se você tivesse criado weekday usando weekday(std::chrono::sys_days(dp.time_since_epoch())).

Exemplo: criar um 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 retornado

O valor do dia da semana.

iso_encoding

O valor do dia da semana, mas com domingo (0), é interpretado como 7 de acordo com a norma ISO 8601.

constexpr unsigned iso_encoding() const noexcept;

Valor retornado

O valor do dia da semana.

ok

Verifique se o valor armazenado neste weekday está no intervalo válido.

constexpr bool is_leap() const noexcept;

Valor retornado

true se o valor do dia da semana estiver no intervalo [0, 6]. Caso contrário, false.

operator++

Adicione 1 ao valor do dia da semana.

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

Valor retornado

1) Uma referência ao dia da semana *this depois que ela foi incrementada (um incremento de pós-fixação).
2) Uma cópia do weekday, antes de ter sido incrementado (um incremento de prefixo).

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

Comentários

O valor incrementado é modulo 7. Ele sempre estará no intervalo [0, 6].

operator--

Subtraia 1 do valor weekday.

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

Valor retornado

1) Uma referência a *this weekday depois de ter sido decrementado (um decremento pós-fixado).
2) Uma cópia do antes de ter sido decrementado (um decréscimo de prefixo).weekday

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

Comentários

Se o resultado reduzido for menor que 0, ele será definido como 6.

operator+=

Adicione dias a um weekday.

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

Parâmetros

*d*
O número de dias a serem adicionados.

Valor retornado

O valor de *this + d. O resultado será modulo 7 no intervalo [0, 6].

operator-=

Subtraia dias de weekday.

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

Parâmetros

*d*
O número de dias a subtrair.

Valor retornado

O valor de *this - d. O resultado será modulo 7 no intervalo [0, 6].

operator[]

Crie um weekday_indexed ou weekday_last deste weekday.

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

Valor retornado

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

Exemplo: 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 dia da semana

(C++20) O cabeçalho <chrono> define as seguintes constantes que você pode usar com weekday para maior conveniência, segurança de tipos e facilidade de manutenção do seu código. Essas constantes estão no escopo quando std::chrono está no escopo.

// 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};

Confira também

weekday_last classe
weekday_indexed classe
<chrono>
Referência de Arquivos de Cabeçalho