Sdílet prostřednictvím


Třída year_month_day

Představuje měsíc, rok a den.

Syntaxe

class year_month_day; // C++20

Členové

Název Popis
Konstruktory Vytvoření year_month_day
day Vrátí den.
month Vrátí měsíc.
ok Ověřte, že year jsou hodnoty month v platném rozsahu.
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_day doby jako local_days.
operator sys_days Získejte počet dní od epochy system_clock do této year_month_day doby jako sys_days.
year Vrátí rok.

Nečlenové

Název Popis
from_stream Parsování year_month_day datového proudu pomocí zadaného formátu
operator+ Přidejte měsíce nebo roky.
operator- Odečítá měsíce nebo roky.
operator== Určete, zda jsou dvě year_month_day hodnoty stejné.
operator<=> Porovnejte dvě year_month_day hodnoty. Operátory >, >=, <=, <, != jsou syntetizovány kompilátorem.
operator<< year_month_day 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ření .year_month_day

1) year_month_day() = default;
2) constexpr year_month_day(const year& y, const month& m, day& d) noexcept;
3) constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
4) constexpr year_month_day(const sys_days& dp) noexcept;
5) constexpr explicit year_month_day(const local_days& dp) noexcept;

Parametry

d Hodnota day .

dp A sys_days nebo local_days hodnota.

m Hodnota month .

y
Hodnota year .

ymdl Hodnota year_month_day_last .

Poznámky

1) Výchozí konstruktor neicializuje měsíc nebo den.
2) Vytvoří se year_month_day zadaným rokem, měsícem a dnem.
3) Vytvoří se year_month_day zadaným rokem, měsícem a dnem od ymdl
4) Vytvoří tabulku se stejným datem year_month_day jako dp.
5) Vytvoří shodným datem year_month_day , dp ale jako by byl vytvořen year_month_day(sys_days(dp.time_since_epoch())).

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_day

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

using namespace std::chrono;

int main()
{
    year_month_day ymd{ April / 4 / 1975 };
    std::cout << ymd;
    return 0;
}
1975-04-04

day

Chytnout den.

constexpr day day() const noexcept;

Vrácená hodnota

Hodnota day.

month

Získejte měsíc.

constexpr month month() const noexcept;

Vrácená hodnota

Hodnota month.

operator local_days

Získejte počet dnů od system_clock epochy (1. 1. 1970) jako year_month_daylocal_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()}

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í počet sys_days dnů od sys_days epochy (1.1.1970) do data, které se v tomto year_month_dayobdobí koná . Hodnota bude záporná, pokud je datum v tomto year_month_day období před epochou sys_days .

Pokud rok a měsíc v tomto year_month_day jsou ok(), vrátí .sys_days{year/month/1d} + (day-1d) Jinak vrácená hodnota není zadaná.

A sys_days v oblasti [days{-12687428}, days{11248737}] lze převést na year_month_day a zpět a mít stejnou hodnotu.

year

Získejte rok.

constexpr year year() const noexcept;

Vrácená hodnota

year.

ok

Zkontrolujte, jestli je v platném rozsahu uložená year_month_day hodnota roku i měsíce. Zajišťuje, aby byl den v rozsahu [1d, (y/m/last).day()], přičemž se započítávají přestupné roky a jiný počet dní v každém měsíci.

constexpr bool ok() const noexcept;

Vrácená hodnota

trueyear_month_day pokud jsou hodnoty roku, měsíce a dne v platném rozsahu. V opačném případě hodnota false.

operator+=

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

1) constexpr year_month_day& operator+=(const months& dm) noexcept;
2) constexpr year_month_day& operator+=(const years& dy) noexcept;

Parametry

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

dy
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_day ymd{June / 1d / 2021y};

    std::cout << ymd << '\n';

    ymd += months{2};
    ymd += years{1};

    std::cout << ymd;
    
    return 0;
}
2021-06-01
2022-08-01

operator-=

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

1) constexpr year_month_day& operator-=(const months& dm) noexcept;
2) constexpr year_month_day& operator-=(const years& dy) noexcept;

Parametry

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

dy
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_day ymd{June / 1d / 2021y};

    std::cout << ymd << '\n';

    ymd -= months{2};
    ymd -= years{1};

    std::cout << ymd;
    
    return 0;
}
2021-06-01
2020-04-01

Viz také

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