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_day
local_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_day
období 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
true
year_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_day
mě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