Sdílet prostřednictvím


Třída weekday

Představuje den v týdnu v gregoriánském kalendáři. Například úterý.

Syntaxe

class weekday; // C++20

Poznámky

A weekday může obsahovat hodnotu [0, 255], ale obvykle obsahuje hodnotu [0, 6] představující den v týdnu. Pro konstanty, které můžete použít se weekday třídou, najdete níže uvedené konstanty v pracovní dny.

Členové

Název Popis
Konstruktory Vytvoření .weekday
c_encoding weekday Získá hodnotu.
iso_encoding Získá hodnotu ISO 8601 weekday .
ok Zkontrolujte, weekday jestli je hodnota platná.
operator++ Navýšte hodnotu weekday.
operator+= Do tohoto weekdaypole přidejte zadaný počet pracovních dnů .
operator-- Dekrementace weekday.
operator-= Odečtěte zadaný počet dnů v týdnu od tohoto weekdayparametru .
operator[] Z tohoto souboru vytvořte weekday_indexed nebo weekday_last .weekday

Nečlenové

Název Popis
from_stream Parsujte weekday z daného datového proudu pomocí zadaného formátu.
operator+ K tomuto weekdayparametru přidejte zadaný počet pracovních dnů .
operator- Odečtěte zadaný počet dnů v týdnu od tohoto weekdayobjektu nebo zjistíte rozdíl mezi dvěma weekday objekty.
operator== Určete, zda jsou dva weekday objekty stejné.
operator<< weekday Výstup streamu

Požadavky

Hlavička: <chrono> Od C++20

Obor názvů: std::chrono

Možnost kompilátoru: /std:c++latest

Konstruktory

Vytvoří .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

Parametry

dp
weekday Vytvořte pomocí dne v týdnu dp.

wd
Vytvořte hodnotu weekday s hodnotou wd.

Poznámky

1) Výchozí konstruktor neicializuje hodnotu dne v týdnu.
2) Vytvořte s zadanou weekday hodnotou.
Pokud wd je hodnota 7, je weekday vytvořena s hodnotou 0.
Inicializovat s hodnotami nad 255 nebo výsledek weekday bude mít nezadanou hodnotu.
3) Vypočítá den v týdnu odpovídá hodnotě std::chrono::sys_days dpa vytvoří weekday pomocí tohoto dne.
4) Vypočítá den v týdnu, který odpovídá std::chrono::local_days hodnotě dp, a vytvoří weekday pomocí tohoto dne. Chová se jako kdybyste vytvořili weekday pomocí weekday(std::chrono::sys_days(dp.time_since_epoch())).

Příklad: Vytvoření 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;

Vrácená hodnota

Hodnota dne v týdnu.

iso_encoding

Hodnota dne v týdnu, ale s neděli (0) je interpretována jako 7 na ISO 8601.

constexpr unsigned iso_encoding() const noexcept;

Vrácená hodnota

Hodnota dne v týdnu.

ok

Zkontrolujte, jestli je hodnota uložená v tomto weekday rozsahu.

constexpr bool is_leap() const noexcept;

Vrácená hodnota

true pokud je hodnota dne v týdnu v rozsahu [0, 6]. V opačném případě hodnota false.

operator++

Přidejte 1 k hodnotě dne v týdnu.

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

Vrácená hodnota

1) Odkaz na *this den v týdnu po jeho zvýšení (přírůstek přípony).
2) Kopie weekday, před zvýšením (předpona přírůstku).

Příklad: 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

Poznámky

Inkrementovaná hodnota je modulo 7. Bude vždy v rozsahu [0, 6].

operator--

Odečítá od hodnoty 1 weekday .

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

Vrácená hodnota

1) Odkaz na poté, co *this weekday byl dekrementován (dekrementace přípony).
2) Kopie weekday dříve, než byla dekrementována (dekrementace předpony).

Příklad: 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

Poznámky

Pokud je dekrementovaný výsledek menší než 0, nastaví se na hodnotu 6.

operator+=

Přidat dny do .weekday

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

Parametry

*d*
Počet dnů, které se mají přidat.

Vrácená hodnota

Hodnota .*this + d Výsledkem bude modulo 7 v rozsahu [0, 6].

operator-=

Odečítá dny od weekday.

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

Parametry

*d*
Počet dnů, které se mají odečíst.

Vrácená hodnota

Hodnota .*this - d Výsledkem bude modulo 7 v rozsahu [0, 6].

operator[]

Z tohoto souboru vytvořte weekday_indexed nebo weekday_last .weekday

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

Vrácená hodnota

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

Příklad: 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

Konstanty v pracovní dny

(C++20) Hlavička <chrono> definuje následující konstanty, které můžete použít weekday pro větší pohodlí, bezpečnost typů a udržovatelnost kódu. Tyto konstanty jsou v oboru, pokud std::chrono jsou v oboru.

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

Viz také

Třída weekday_last
Třída weekday_indexed
<chrono>
Referenční informace k souborům hlaviček