Sdílet prostřednictvím


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 monthzadaný počet měsíců .
operator-- Dekrementace tohoto month.
operator-= Odečtěte zadaný počet měsíců od tohoto monthparametru .
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 monthzadaný 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