Sdílet prostřednictvím


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_timenebo jiného nebo sys_timejiného zoned_timelocal_time .zoned_time
operator local_time zoned_timeKombinuje č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_timena . 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_timeobjektu .

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 , cnemá žá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 , cnemá žá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_timesouboru .

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_timenebo local_timesys_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_timesouboru .

lt
Přiřazení local_time k uloženému time_point v tomto zoned_timesouboru .

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_timeobjektu . 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_timeKombinuje č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