Třída month
Představuje měsíc roku. Například červenec.
Syntaxe
class month; // C++20
Poznámky
Obvykle month
obsahuje hodnoty v rozsahu [1, 12]. Může také obsahovat nezáporné hodnoty mimo tento rozsah.
V části Měsíční konstanty níže najdete konstanty, které můžete použít s month
třídou.
Členové
Název | Popis |
---|---|
Konstruktory | Vytvoření .month |
ok |
Ověřte, že hodnota měsíce je v platném rozsahu [1,12]. |
operator++ |
Navýšte hodnotu month . |
operator+= |
Přidejte k tomu month zadaný počet měsíců . |
operator-- |
Dekrementace tohoto month . |
operator-= |
Odečtěte zadaný počet měsíců od tohoto month parametru . |
operator unsigned |
month Získá hodnotu. |
Nečlenové
Název | Popis |
---|---|
from_stream |
Parsujte month z daného datového proudu pomocí zadaného formátu. |
operator+ |
Přidejte k tomu month zadaný počet měsíců a vrátí se nová month instance. |
operator- |
Odečtěte zadaný počet měsíců od tohoto měsíce. Vrátí novou month instanci. |
operator== |
Určete, jestli jsou dva měsíce stejné. |
operator<=> |
Porovnejte tento měsíc s jiným měsícem. Operátory >, >=, <=, <, != jsou syntetizovány kompilátorem. |
operator<< |
month Vypíše do daného datového proudu. |
Požadavky
Hlavička: <chrono>
(od C++20)
Obor názvů: std::chrono
Možnost kompilátoru: /std:c++latest
Konstruktory
Vytvoření .month
1) month() = default;
2) explicit constexpr month(unsigned m) noexcept;
Parametry
m
Vytvořte hodnotu month
s hodnotou m
.
Poznámky
1) Výchozí konstruktor neicializuje hodnotu dne.
2) Vytvořte month
hodnotu dne inicializované na m
.
ok
Zkontrolujte, jestli je hodnota uložená v tomto month
rozsahu.
constexpr bool ok() const noexcept;
Vrácená hodnota
true
pokud je hodnota měsíce v rozsahu [1,12]. V opačném případě hodnota false
.
operator++
Zvýší hodnotu měsíce.
1) constexpr month& operator++() noexcept;
2) constexpr month operator++(int) noexcept;
Vrácená hodnota
1) Odkaz na *this
měsíc po jeho zvýšení (přírůstek přípony).
2) Kopie month
, 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::chrono;
int main()
{
month m{ January };
month m2{4}; // April
std::cout << m << " " << ++m << "\n"; // constexpr month& operator++() noexcept
std::cout << m << " " << m++ << "\n"; // constexpr month operator++(int) noexcept
std::cout << m << "\n";
std::cout << m2 << "\n";
return 0;
}
Jan Feb
Feb Feb
Mar
Apr
Poznámky
Pokud výsledek překročí hodnotu 12, nastaví se na hodnotu 1.
operator--
Odečítá od hodnoty měsíce hodnotu 1.
1) constexpr month& operator--() noexcept;
2) constexpr month operator--(int) noexcept;
Vrácená hodnota
1) Odkaz na poté, co *this
month
byl dekrementován (dekrementace přípony).
2) Kopie month
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()
{
month m{May};
cout << m << " " << --m << "\n"; // constexpr month& operator++() noexcept
cout << m << " " << m-- << "\n"; // constexpr month operator++(int) noexcept
cout << m << "\n";
return 0;
}
May Apr
Apr Apr
Mar
Poznámky
Pokud je dekrementovaný výsledek menší než 1, nastaví se na hodnotu 12.
operator+=
Přidat měsíce k tomuto month
.
constexpr month& operator+=(const months& m) noexcept;
Parametry
m
Počet měsíců, které se mají sčítat.
Vrácená hodnota
*this
operator-=
Odečítá months
se od tohoto month
.
constexpr month& operator-=(const months& m) noexcept;
Parametry
m
Měsíce, které se mají odečíst.
Vrácená hodnota
*this
.
operator unsigned
Získá nepodepsanou month
hodnotu.
explicit constexpr operator unsigned() const noexcept;
Vrácená hodnota
Unsigned value of this month
Příklad: operator unsigned()
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
month m{July};
unsigned monthValue = static_cast<unsigned>(m);
std::cout << monthValue << "\n";
return 0;
}
7
Měsíční konstanty
(C++20) Hlavička <chrono>
definuje následující konstanty, které můžete použít month
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 month January{1};
inline constexpr month February{2};
inline constexpr month March{3};
inline constexpr month April{4};
inline constexpr month May{5};
inline constexpr month June{6};
inline constexpr month July{7};
inline constexpr month August{8};
inline constexpr month September{9};
inline constexpr month October{10};
inline constexpr month November{11};
inline constexpr month December{12};
Viz také
<chrono>
month_day
Třída
month_day_last
Třída
month_weekday
Třída
Třída month_weekday_last