Třída zoned_time
A zoned_time
je dvojice a time_zone
time_point
. time_point
Dává význam v rámci určitého časového pásma.
Syntaxe
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ; // C++20
Poznámky
Vždy zoned_time
odkazuje na platné časové pásmo a představuje bod v čase, který existuje a není v tomto časovém pásmu nejednoznačný.
Členové
Název | Popis |
---|---|
Konstruktory | Vytvoření .zoned_time |
get_info |
Používá časové pásmo v této zoned_time oblasti k získání informací o časovém bodu v bodě zoned_time . |
get_local_time |
Kombinuje časové pásmo v zoned_time úložišti s uloženým časovým bodem a vytvoří místní čas v daném časovém pásmu. |
get_sys_time |
Získá časový bod uložený v tomto zoned_time bez použití časového pásma. |
get_time_zone |
Získá time_zone uložen v tomto zoned_time . |
operator= |
Přiřaďte k tomu hodnotu jiného zoned_time nebo jiného nebo sys_time jiného zoned_time local_time .zoned_time |
operator local_time |
zoned_time Kombinuje časové pásmo s uloženým časovým bodem a vytvoří místní čas v daném časovém pásmu. |
operator sys_time |
Získá čas uložený v tomto zoned_time bez použití časového pásma. |
Nečlenové
Název | Popis |
---|---|
operator== |
Určete, zda jsou dvě zoned_time instance stejné. |
operator<< |
zoned_time Vypíše do daného datového proudu. |
Aliasy typů pohodlí
Název | Popis |
---|---|
zoned_seconds |
Synonymum pro zoned_time<seconds>; |
zoned_time::duration |
Doba trvání měřená v sekundách. Je to synonymum pro common_type_t<Duration, seconds>; |
Požadavky
Záhlaví: <chrono>
Microsoft C++ podporuje zoned_time
třídu počínaje sadou Visual Studio 2019 verze 16.10.
Data časového pásma jsou dostupná jenom pro Windows 10 verze 1903/19H1 a novější a Windows Server 2022 a novější.
Obor názvů: std::chrono
Možnost kompilátoru: /std:c++latest
Konstruktory
Vytvoření .zoned_time
1) zoned_time();
2) zoned_time(const zoned_time& zt) = default;
3) explicit zoned_time(TimeZonePtr z);
4) zoned_time(const sys_time<Duration>& st);
5) explicit zoned_time(string_view name);
6) zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
7) zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
8) zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
9) zoned_time(string_view name, const local_time<Duration>& tp);
10) zoned_time(string_view name, const local_time<Duration>& tp, choose c);
11) zoned_time(string_view name, const sys_time<Duration>& st);
12) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y);
13) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y, choose c);
14) template<class Duration> zoned_time(const zoned_time<Duration, TimeZonePtr>& y);
15) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y);
16) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y, choose);
Parametry
c
Označuje, jak zpracovat nejednoznačné nebo neexistující místní časy při převodu local_time
sys_time
na . Další informace naleznete v výčtuchoose
.
name
Název časového pásma.
st
A sys_time
se zadanou dobou trvání. Slouží k nastavení času.
tp
A local_time
se zadanou dobou trvání. Slouží k nastavení času.
y
Zkopírováno zoned_time
pro vytvoření nového zoned_time
.
z
A time_zone
to je std::move(z)
'd do konstruované zoned_time
.
zt
Ukazatel zoned_time
, který je std::move(zt)
'd do vytvořeného zoned_time
objektu .
Poznámky
1) Inicializuje časové pásmo pomocí traits::default_zone()
a výchozí konstrukce časového bodu.
2) Výchozí konstruktor kopírování.
3) Inicializuje časové pásmo pomocí std::move(z)
a výchozí konstrukce časový bod.
4) Inicializuje časové pásmo s traits::default_zone()
a čas s st
.
5) Inicializuje časové pásmo s traits::locate_zone(name)
výchozími konstrukcemi časového bodu.
6) Inicializuje časové pásmo s std::move(z)
a čas převodem tp
, jako by z->to_sys(tp)
.
7) Inicializuje časové pásmo s std::move(z)
a čas, jako by z->to_sys(tp, c)
. Podívejte se choose
na výčet toho, jak parametr c
ovlivňuje výsledek.
8) Inicializuje časové pásmo s std::move(z)
a čas s st
.
9) Ekvivalent konstrukce s {traits::locate_zone(name), tp}
.
10) Ekvivalent konstrukce s {traits::locate_zone(name), tp, c}
.
11) Ekvivalent konstrukce s {traits::locate_zone(name), st}
.
12) Ekvivalent konstrukce s {traits::locate_zone(name), y}
.
13) Ekvivalent konstrukce s {traits::locate_zone(name), y, c}
. Parametr choose
, c
nemá žádný vliv.
14) Inicializuje časové pásmo z y
časového pásma a časového bodu.
15) Inicializuje časové pásmo a std::move(z)
čas od y
časového bodu.
16) Ekvivalent konstrukce s {z, y}
. Parametr choose
, c
nemá žádný vliv.
Poznámka:
zoned_time
nemá konstruktor přesunutí. Při pokusu o přesunutí se vytvoří kopie pomocí výchozího konstruktoru kopírování.
Příklad: vytvoření zoned_time
Následující příklad ukazuje, jak vytvořit zoned_time
instanci pro časové pásmo "Antarctica/Casey"
, 15. 9. 2021 v 14:45:
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt;
return 0;
}
2021-09-16 03:45:00 GMT+11
get_info
Používá časové pásmo v této zoned_time
oblasti k získání informací o časovém bodu v bodě zoned_time
.
sys_info get_info() const;
Vrácená hodnota
A sys_info
, který obsahuje posun UTC pro časové pásmo a čas, posun úpravy letního času atd.
Příklad: get_info
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
sys_info si = zt.get_info();
std::cout << si;
return 0;
}
begin: 2020-10-03 16:01:00, end: 32767-12-31 23:59:59, offset: 39600s, save: 0min, abbrev: GMT+11
get_local_time
local_time<duration>
Získá hodnotu, která představuje místní čas vzhledem k tomuto zoned_time
časovému pásmu a časovému bodu.
local_time<duration> get_local_time() const;
Vrácená hodnota
local_time
Vrácená hodnota je synonymem pro time_point<local_t, duration>
.
Příklad: get_local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt.get_info();
return 0;
}
2021-09-16 03:45:00
get_sys_time
Získá čas uložený v zoned_time
pro .system_clock
sys_time<duration> get_sys_time() const;
Vrácená hodnota
Čas uložený v tomto zoned_time
časovém pásmu bez úpravy časového pásma. Představuje systémový nástěnný čas jako time_point. sys_time
Vrácená hodnota je synonymem protemplate <class Duration> time_point<system_clock Duration>;
Příklad: get_sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt.get_sys_time();
return 0;
}
2021-09-15 16:45:00
get_time_zone
Získá časové pásmo uložené v tomto zoned_time
.
TimeZonePtr get_time_zone() const;
Vrácená hodnota
Ukazatel na time_zone uložený v tomto zoned_time
souboru .
Příklad: get_time_zone
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
auto pTZ = zt.get_time_zone();
std::cout << pTZ->name();
return 0;
}
Antarctica/Casey
operator=
Přiřaďte jinou zoned_time
k this
jedné. Nebo přiřaďte jenom jiné zoned_time
nebo local_time
sys_time
.
1) zoned_time& operator=(const zoned_time& zt) = default;
2) zoned_time& operator=(const sys_time<Duration>& st);
3) zoned_time& operator=(const local_time<Duration>& lt);
Parametry
zt
Přiřazení zoned_time
k this
jednomu.
st
Přiřazení sys_time
k uloženému time_point
v tomto zoned_time
souboru .
lt
Přiřazení local_time
k uloženému time_point
v tomto zoned_time
souboru .
Vrácená hodnota
*this
Příklad: operator=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt1{}, zt2("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
std::cout << zt2.get_local_time() << "\n";
zt1 = zt2.get_local_time();
std::cout << zt1.get_local_time();
return 0;
}
2021-09-15 10:45:00
2021-09-15 10:45:00
Poznámky
1) Výchozí operátor přiřazení kopírování. Kopie (nepřesouvají) uložené time_point
a time_zone ukazatel od druhého zoned_time
do tohoto zoned_time
objektu .
2) Přiřadí st
k tomuto time_point
zoned_time
. Po zadání *this->get_sys_time() == st;
3) Převede lt
(alocal_time
) na .sys_time
Dělá to v podstatě jako timeZone->to_sys(lt)
a přiřadí výsledek [time_point
] v tomto zoned_time
. Po zadání *this->get_local_time() == lt;
operator local_time
zoned_time
Kombinuje časové pásmo s uloženým časovým bodem a vytvoří místní čas v daném časovém pásmu.
explicit operator local_time<duration>() const;
Vrácená hodnota
A time_point<local_t, Duration>
, který představuje místní čas pro čas a časové pásmo v tomto zoned_time
. Alias local_time
pohodlí můžete použít k reprezentaci hodnoty vrácené touto funkcí.
Návratová hodnota je efektivní. timeZone->to_local(get_sys_time());
Příklad: operator local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Pacific/Galapagos", sys_days{ 2021y / September / 15d } + 16h + 45min);
std::cout << (local_time<seconds>)zt;
return 0;
}
2021-09-15 10:45:00
operator sys_time
Získá časový bod uložený v tomto zoned_time
bez použití časového pásma.
operator sys_time<duration>() const;
Vrácená hodnota
Čas uložený v tomto zoned_time
časovém pásmu bez úpravy časového pásma. sys_time
Vrácená hodnota je synonymem pro template <class Duration> time_point<system_clock Duration>;
a představuje stejný bod v čase, který je uložen v tomto zoned_time
.
Příklad: operator sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
std::cout << (sys_time<seconds>)zt;
return 0;
}
2021-09-15 16:45:00
Viz také
<chrono>
time_point
time_zone
zoned_traits
Struct
Referenční informace k souborům hlaviček