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 weekday pole přidejte zadaný počet pracovních dnů . |
operator-- |
Dekrementace weekday . |
operator-= |
Odečtěte zadaný počet dnů v týdnu od tohoto weekday parametru . |
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 weekday parametru přidejte zadaný počet pracovních dnů . |
operator- |
Odečtěte zadaný počet dnů v týdnu od tohoto weekday objektu 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
dp
a 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