Sdílet prostřednictvím


Třída year_month_weekday

Představuje konkrétní rok, měsíc a nth weekday v měsíci.

Syntaxe

class year_month_weekday; // C++20

Poznámky

year_month_weekday podporuje aritmetické roky a měsíce, ale ne dny orientované aritmetické. U aritmetik orientovaných na dny použijte sys_days převod na sys_days, který podporuje aritmetické dny orientované na dny.

year_month_weekday je triviálně kopírovatelný a standardní typ třídy rozložení.

Členové

Název Popis
Constructor Vytvořte s year_month_weekday určeným měsícem a dnem v týdnu.
index Získejte index dne v týdnu.
month Získá hodnotu měsíce.
ok Zkontrolujte, jestli je platná year_month_weekday .
operator+= Přidejte zadaný počet měsíců nebo roků.
operator-= Odečtěte zadaný počet měsíců nebo roků.
operator local_days Získejte počet dní od epochy system_clock do této year_month_weekday doby jako local_days.
operator sys_days Získejte počet dní od epochy system_clock do této year_month_weekday doby jako sys_days.
weekday Chytni den v týdnu.
weekday_indexed Získejte [weekday_indexed] uložené v tomto year_month_weekdaysouboru .
year Získejte rok.

Nečlenové

Název Popis
operator+ Přidejte měsíce nebo roky.
operator- Odečítá měsíce nebo roky.
operator== Určete, zda jsou dvě year_month_weekday hodnoty stejné.
operator<< year_month_weekday 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

Konstruktor

Vytvoří .year_month_weekday

// 1)
year_month_weekday() = default

// 2)
constexpr year_month_weekday(const year& y, const month& m, const weekday_indexed& wdi) noexcept;

// 3) 
constexpr explicit year_month_weekday(const local_days& dp) noexcept;

// 4)
constexpr year_month_weekday(const sys_days& dp) noexcept;

Parametry

m
Hodnota month.

dp
A sys_days nebo local_days

wdi
Hodnota weekday.

y
Hodnota year.

Poznámky: Konstruktor

1) Výchozí konstruktor neicializuje žádná pole.

2) Vytvoří, year_month_weekday který odpovídá zadanému year, montha weekday_indexed.

3) Vytvoří year_month_weekday , která odpovídá datu reprezentované sys_days{dp.time_since_epoch()}.

4) Vytvoří year_month_weekday , který odpovídá datu reprezentované dp. Pro každý year_month_weekday (ymdl), pro který ok() je true, porovnání s operator== year_month_weekday{sys_days{ymdl}} bude true.

Informace o syntaxi jazyka C++20 použité k určení kalendářních dat najdete v tématu operator/

Příklad: Vytvoření year_month_weekday

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';
    
    return 0;
}
1997/Jan/Wed[1]

index

Získejte index týdne dne v tomto year_month_weekdaytýdnu .

constexpr unsigned index() const noexcept;

Vrácená hodnota

Index dne v týdnu. Pokud by například den v týdnu byla první středa v týdnu, index by byl 1.

month

Získá hodnotu měsíce.

constexpr month month() const noexcept;

Vrácená hodnota

Hodnota month.

ok

Zkontrolujte, jestli je hodnota uložená v této year_month_weekday hodnotě platná. , yeara uložené v tomto year_month_weekday musí být ok všechny pro tuto funkci vrátit true.weekday_index month V opačném případě vrátí hodnotu false.

constexpr bool ok() const noexcept;

Vrácená hodnota

trueyear_month_weekday pokud je hodnota platná. V opačném případě hodnota false.
Hodnota A year_month_weekday je platná, pokud je platná month a weekday_indexed hodnota je platná.

operator+=

Přidejte k tomu year_month_weekdayměsíce nebo roky .

1) constexpr year_month_weekday& operator+=(const months& m) noexcept;
2) constexpr year_month_weekday& operator+=(const years& y) noexcept;

Parametry

m
Počet měsíců, které se mají sčítat.

y
Počet roků, které se mají přičíst.

Vrácená hodnota

*this který odráží výsledek sčítání.

Příklad: operator+=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';

    ymw += months{1};
    ymw += years{1};

    std::cout << ymw << '\n';
    
    return 0;
}
1997/Jan/Wed[1]
1998/Feb/Wed[1]

operator-=

Odečítá měsíce nebo roky od tohoto year_month_weekday.

1) constexpr year_month_weekday& operator-=(const months& m) noexcept;
2) constexpr year_month_weekday& operator-=(const years& y) noexcept;

Parametry

m
Počet měsíců, které se mají odečíst.

y
Počet roků, které se mají odečíst.

Vrácená hodnota

*this který odráží výsledek odčítání.

Příklad: operator-=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year_month_weekday ymw{1997y / January / Wednesday[1]};
    std::cout << ymw << '\n';

    ymw -= months{1};
    ymw -= years{1};

    std::cout << ymw << '\n';
    
    return 0;
}
1997/Jan/Wed[1]
1995/Dec/Wed[1]

operator local_days

Získejte počet dnů od system_clock epochy (1. 1. 1970) jako year_month_weekdaylocal_days

constexpr explicit operator local_days() const noexcept;

Vrácená hodnota

Pokud ok()vrátí počet dnů jako local_days{sys_days{*this}.time_since_epoch()}. V opačném případě není zadaná vrácená hodnota.

operator sys_days

Získejte počet dnů od system_clock epochy (1.1.1970) do tohoto typu year_month_day sys_days.

constexpr operator sys_days() const noexcept;

Vrácená hodnota

Pokud ok()vrátí hodnotusys_days, která představuje datum, které je (index() - 1) * 7 dny po prvním weekday() z .year()/month() Pokud index() je 0, vrácené sys_days představuje datum 7 dní před prvním weekday() z .year()/month()

weekday

Získejte uloženou weekday uloženou weekday_indexed v tomto year_month_weekdaysouboru .

constexpr weekday weekday() const noexcept;

Vrácená hodnota

Hodnota weekday.

weekday_indexed

Získejte uloženou weekday_indexed v tomto year_month_weekdaysouboru .

constexpr weekday_indexed weekday_indexed() const noexcept;

Vrácená hodnota

Hodnota weekday_indexed.

year

Získá hodnotu roku.

constexpr year year() const noexcept;

Vrácená hodnota

Hodnota year.

Viz také

<chrono>
year
year_month
year_month_day
year_month_day_last
year_month_weekday_last
operator/Referenční informace k souborům hlaviček