Udostępnij za pośrednictwem


Klasa zoned_time

A zoned_time to parowanie a time_zone i time_point. Daje znaczenie time_point w określonej strefie czasowej.

Składnia

template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ;  // C++20

Uwagi

Element zoned_time zawsze odwołuje się do prawidłowej strefy czasowej i reprezentuje punkt w czasie, który istnieje i nie jest niejednoznaczny w tej strefie czasowej.

Elementy członkowskie

Nazwa/nazwisko opis
Konstruktory Skonstruuj element zoned_time.
get_info Używa strefy czasowej w tym zoned_time celu, aby uzyskać informacje o punkcie czasu w obiekcie zoned_time.
get_local_time Łączy strefę czasową w zoned_time obiekcie z przechowywanym punktem czasu w celu utworzenia czasu lokalnego w tej strefie czasowej.
get_sys_time Pobiera punkt czasu przechowywany w tym zoned_time miejscu bez stosowania strefy czasowej.
get_time_zone Pobiera time_zone przechowywane w tym pliku zoned_time.
operator= Przypisz do tego wartość innego zoned_timeelementu lub innego sys_timezoned_timelocal_time elementu lub .zoned_time
operator local_time zoned_timeŁączy strefę czasową z przechowywanym punktem czasu w celu utworzenia czasu lokalnego w tej strefie czasowej.
operator sys_time Pobiera czas przechowywany w tym zoned_time miejscu bez stosowania strefy czasowej.

Inne niż elementy członkowskie

Nazwa/nazwisko opis
operator== Ustal, czy dwa zoned_time wystąpienia są równe.
operator<< zoned_time Wyprowadź element do danego strumienia.

Aliasy typu wygody

Nazwa/nazwisko opis
zoned_seconds Synonim dla zoned_time<seconds>;
zoned_time::duration Czas trwania mierzony w sekundach. Jest to synonim dla common_type_t<Duration, seconds>;

Wymagania

Nagłówek: <chrono>

Język Microsoft C++ obsługuje klasę rozpoczynającą zoned_time się w programie Visual Studio 2019 w wersji 16.10.

Dane strefy czasowej są dostępne tylko dla systemu Windows 10 w wersji 1903/19H1 i nowszych oraz systemu Windows Server 2022 i nowszych.

Przestrzeń nazw: std::chrono

Opcja kompilatora: /std:c++latest

Konstruktory

Skonstruuj element 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
Wskazuje, jak obsługiwać niejednoznaczne lub nieistniejące czasy lokalne podczas konwertowania local_time wartości na sys_time. Aby uzyskać więcej informacji, zobacz choose wyliczenie.

name
Nazwa strefy czasowej.

st
A sys_time z określonym czasem trwania. Służy do ustawiania czasu.

tp
A local_time z określonym czasem trwania. Służy do ustawiania czasu.

y
Skopiowany zoned_time do utworzenia nowego zoned_timeelementu .

z
Element time_zone " std::move(z)d" do skonstruowanego zoned_time.

zt
Wskaźnik zoned_time , który jest std::move(zt)'d do skonstruowanego zoned_time.

Uwagi

1) Inicjuje strefę czasową za pomocą traits::default_zone()elementu , a ustawienie domyślne konstruuje punkt czasu.
2) Domyślny konstruktor kopiowania.
3) Inicjuje strefę czasową za pomocą std::move(z)elementu , a ustawienie domyślne konstruuje punkt czasu.
4) Inicjuje strefę czasową za pomocą traits::default_zone()parametru i godzinę .st
5) Inicjuje strefę czasową i traits::locate_zone(name) domyślnie konstruuje punkt czasu.
6) Inicjuje strefę czasową za pomocą std::move(z)parametru i czas, konwertując tp je tak, jak na z->to_sys(tp)wartość .
7) Inicjuje strefę czasową za pomocą std::move(z)parametru i czas, tak jak w przypadku z->to_sys(tp, c)wartości . Zobacz choose wyliczenie , jak parametr c wpływa na wynik.
8) Inicjuje strefę czasową za pomocą std::move(z)parametru i godzinę .st
9) Odpowiednik konstrukcji z elementem {traits::locate_zone(name), tp}.
10) Odpowiednik konstrukcji z elementem {traits::locate_zone(name), tp, c}.
11) Odpowiednik konstrukcji z elementem {traits::locate_zone(name), st}.
12) Odpowiednik konstrukcji z elementem {traits::locate_zone(name), y}.
13) Odpowiednik konstrukcji z elementem {traits::locate_zone(name), y, c}. Parametr choose , cnie ma żadnego efektu.
14) Inicjuje strefę czasową ze ystrefy czasowej i punktu czasowego.
15) Inicjuje strefę std::move(z) czasową i czas od ypunktu czasowego.
16) Odpowiednik konstrukcji z elementem {z, y}. Parametr choose , cnie ma żadnego efektu.

Uwaga

zoned_time nie ma konstruktora przenoszenia. Próba przeniesienia powoduje utworzenie kopii przy użyciu domyślnego konstruktora kopiowania.

Przykład: konstruowanie elementu zoned_time

Poniżej przedstawiono sposób tworzenia zoned_time wystąpienia dla strefy czasowej "Antarctica/Casey", w dniu 15.09.2021 o 16: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

Używa strefy czasowej w tym zoned_time celu, aby uzyskać informacje o punkcie czasu w obiekcie zoned_time.

sys_info get_info() const;

Wartość zwracana

Element sys_info , który zawiera przesunięcie UTC dla strefy czasowej i godziny, przesunięcie korekty czasu letniego itd.

Przykład: 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

Pobiera element local_time<duration> reprezentujący czas lokalny, biorąc pod uwagę tę zoned_timestrefę czasową i punkt czasu.

local_time<duration> get_local_time() const;

Wartość zwracana

Zwrócony local_time element jest synonimem .time_point<local_t, duration>

Przykład: 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

Pobiera czas przechowywany w zoned_time obiekcie dla elementu system_clock.

sys_time<duration> get_sys_time() const;

Wartość zwracana

Czas przechowywany w tym zoned_timeobiekcie bez żadnego dostosowania strefy czasowej. Reprezentuje czas zegara ściany całej systemu jako time_point. Zwrócony sys_time element jest synonimem template <class Duration> time_point<system_clock Duration>;

Przykład: 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

Pobiera strefę czasową przechowywaną w tym obiekcie zoned_time.

TimeZonePtr get_time_zone() const;

Wartość zwracana

Wskaźnik do time_zone przechowywany w tym obiekcie zoned_time.

Przykład: 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=

Przypisz inny zoned_time do this jednego. Możesz też przypisać tylko inne zoned_timesłowy sys_time lub local_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
Element zoned_time do przypisania do this jednego.

st
Element sys_time do przypisania do pliku przechowywanego time_point w tym obiekcie zoned_time.

lt
Element local_time do przypisania do pliku przechowywanego time_point w tym obiekcie zoned_time.

Wartość zwracana

*this

Przykład: 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

Uwagi

1) Domyślny operator przypisania kopiowania. Kopie (nie są przenoszone) przechowywane time_point i time_zone wskaźnik z drugiej zoned_time do tego zoned_timeelementu . 2) Przypisuje st element do time_point w tym obiekcie zoned_time. Po przypisaniu *this->get_sys_time() == st; 3) Konwertuje lt (a local_time) na sys_time. Robi to zasadniczo jako timeZone->to_sys(lt), i przypisuje wynik do [time_point] w tym obiekcie zoned_time. Po przypisaniu, *this->get_local_time() == lt;

operator local_time

zoned_timeŁączy strefę czasową z przechowywanym punktem czasu w celu utworzenia czasu lokalnego w tej strefie czasowej.

explicit operator local_time<duration>() const;

Wartość zwracana

Wartość time_point<local_t, Duration> reprezentująca czas lokalny dla strefy czasowej i czasowej w tym obiekcie zoned_time. Możesz użyć aliasu wygody local_time , aby reprezentować wartość zwracaną przez tę funkcję.

Wartość zwracana jest skutecznie timeZone->to_local(get_sys_time());

Przykład: 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

Pobiera punkt czasu przechowywany w tym zoned_time miejscu bez stosowania strefy czasowej.

operator sys_time<duration>() const;

Wartość zwracana

Czas przechowywany w tym zoned_timeobiekcie bez żadnego dostosowania strefy czasowej. Zwrócony sys_time element jest synonimem template <class Duration> time_point<system_clock Duration>; i reprezentuje ten sam punkt w czasie, który jest przechowywany w tym obiekcie zoned_time.

Przykład: 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

Zobacz też

<chrono>
time_point
time_zone
zoned_traits Struct
Odwołanie do plików nagłówka