Freigeben über


zoned_time-Klasse

A zoned_time ist eine Kombination aus einem time_zone und einem time_point. Es gibt eine time_point Bedeutung innerhalb einer bestimmten Zeitzone.

Syntax

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

Hinweise

A zoned_time always refers to a valid time zone and represents a point in time that exists and isn't mehrbiguous in that time zone.

Mitglieder

Name Beschreibung
Konstruktoren Erstellen Sie ein zoned_time.
get_info Verwendet die Zeitzone in diesem zoned_time Bereich, um Informationen zum Zeitpunkt in der zoned_time.
get_local_time Kombiniert die Zeitzone mit zoned_time dem gespeicherten Zeitpunkt, um die lokale Zeit in dieser Zeitzone zu erzeugen.
get_sys_time Ruft den in diesem zoned_time Bereich gespeicherten Zeitpunkt ab, ohne die Zeitzone anzuwenden.
get_time_zone Ruft die in diesem zoned_timegespeicherten time_zone ab.
operator= Weisen Sie den Wert eines anderen oder eines anderen zoned_timezoned_timeOder eines sys_timelocal_time anderen zu.zoned_time
operator local_time Kombiniert die zoned_timeZeitzone mit dem gespeicherten Zeitpunkt, um die Ortszeit in dieser Zeitzone zu erzeugen.
operator sys_time Ruft die in dieser zoned_time Zeit gespeicherte Zeit ab, ohne die Zeitzone anzuwenden.

Nicht-Member

Name Beschreibung
operator== Hiermit wird bestimmt, ob zwei zoned_time-Instanzen gleich sind.
operator<< Gibt einen zoned_time an den angegebenen Datenstrom aus.

Komforttypaliasen

Name Beschreibung
zoned_seconds Ein Synonym für zoned_time<seconds>;
zoned_time::duration Eine in Sekunden gemessene Dauer. Es ist ein Synonym für common_type_t<Duration, seconds>;

Anforderungen

Header: <chrono>

Microsoft C++ unterstützt die zoned_time Klasse ab Visual Studio 2019, Version 16.10.

Zeitzonendaten sind nur für Windows 10, Version 1903/19H1 und höher, und Windows Server 2022 und höher verfügbar.

Namespace:std::chrono

Compileroption: /std:c++latest

Konstruktoren

Erstellen Sie ein 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);

Parameter

c
Gibt an, wie mehrdeutige oder nicht vorhandene lokale Zeiten beim Konvertieren einer local_time in ein sys_time. Weitere Informationen finden Sie in choose der Enumeration.

name
Der Name einer Zeitzone.

st
A sys_time mit einer angegebenen Dauer. Wird verwendet, um die Uhrzeit festzulegen.

tp
A local_time mit einer angegebenen Dauer. Wird verwendet, um die Uhrzeit festzulegen.

y
Ein zoned_time kopiertes , um ein neues zoned_timezu erstellen .

z
Das time_zone ist std::move(z)'d in den konstruierten zoned_time.

zt
Ein zoned_time Zeiger, std::move(zt)der 'd in den konstruierten zoned_time.

Hinweise

1) Initialisiert die Zeitzone mit traits::default_zone()und erstellt standardmäßig den Zeitpunkt.
2) Der Standardkopie-Konstruktor.
3) Initialisiert die Zeitzone mit std::move(z)und erstellt standardmäßig den Zeitpunkt.
4) Initialisiert die Zeitzone mit traits::default_zone(), und die Uhrzeit mit st.
5) Initialisiert die Zeitzone mit traits::locate_zone(name) und erstellt standardmäßig den Zeitpunkt.
6) Initialisiert die Zeitzone mit std::move(z), und die Zeit, indem sie wie folgt z->to_sys(tp)konvertiert wirdtp.
7) Initialisiert die Zeitzone mit std::move(z), und die Uhrzeit wie von z->to_sys(tp, c). Siehe choose Enumeration , wie sich der Parameter c auf das Ergebnis auswirkt.
8) Initialisiert die Zeitzone mit std::move(z), und die Uhrzeit mit st.
9) Entspricht dem Bau mit {traits::locate_zone(name), tp}.
10) Entspricht dem Bau mit {traits::locate_zone(name), tp, c}.
11) Entspricht dem Bau mit {traits::locate_zone(name), st}.
12) Entspricht dem Bau mit {traits::locate_zone(name), y}.
13) Entspricht dem Bau mit {traits::locate_zone(name), y, c}. Der choose Parameter hat ckeine Auswirkung.
14) Initialisiert die Zeitzone aus der Zeitzone und dem yUhrzeitpunkt.
15) Initialisiert die Zeitzone mit std::move(z) und der Uhrzeit vom y"Zeitpunkt".
16) Entspricht dem Bau mit {z, y}. Der choose Parameter hat ckeine Auswirkung.

Hinweis

zoned_time verfügt nicht über einen Verschiebungskonstruktor. Wenn Sie versuchen, sie zu verschieben, wird eine Kopie mit dem Standardkopiekonstruktor erstellt.

Beispiel: Erstellen eines zoned_time

Im Folgenden wird gezeigt, wie Sie eine zoned_time Instanz für die Zeitzone "Antarctica/Casey"am 15.09.2021 um 4:45 Uhr erstellen:

// 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

Verwendet die Zeitzone in diesem zoned_time Bereich, um Informationen zum Zeitpunkt in der zoned_time.

sys_info get_info() const;

Rückgabewert

A sys_info that contains the UTC offset for the time zone and time, the daylight savings time adjustment offset, and so on.

Beispiel: 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

Ruft ein local_time<duration> , das die lokale Zeit darstellt, die für diese zoned_timeZeitzone und den Zeitpunkt angegeben ist.

local_time<duration> get_local_time() const;

Rückgabewert

Die zurückgegebene local_time ist ein Synonym für time_point<local_t, duration>.

Beispiel: 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

Ruft die Zeit ab, die in der zoned_time für die system_clock.

sys_time<duration> get_sys_time() const;

Rückgabewert

Die in diesem zoned_timeBereich gespeicherte Zeit ohne Anpassung der Zeitzone. Sie stellt die systemweite Wanduhrzeit als time_point dar. Die zurückgegebene sys_time ist ein Synonym für template <class Duration> time_point<system_clock Duration>;

Beispiel: 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

Ruft die Zeitzone ab, die in diesem zoned_timegespeichert ist.

TimeZonePtr get_time_zone() const;

Rückgabewert

Ein Zeiger auf die in dieser zoned_timeDatei gespeicherte time_zone.

Beispiel: 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=

Zuweisen eines anderen zoned_time zu einem.this Oder weisen Sie nur die anderen zoned_time's sys_time oder 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);

Parameter

zt
Der zoned_time , der einem zugewiesen werden this soll.

st
Diesys_time, die dem gespeicherten in dieser zoned_timeDatei zugewiesen time_point werden soll.

lt
Dielocal_time, die dem gespeicherten in dieser zoned_timeDatei zugewiesen time_point werden soll.

Rückgabewert

*this

Beispiel: 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

Hinweise

1) Der Standardmäßige Kopierzuweisungsoperator. Kopiert den gespeicherten time_point und time_zone Zeiger vom anderen zoned_time in diesen zoned_time. 2) Weist st dies time_point zoned_timezu. Nach der Aufgabe *this->get_sys_time() == st; konvertiert lt 3) (a local_time) in ein sys_time. Dies geschieht im Wesentlichen als timeZone->to_sys(lt), und weist das Ergebnis der [time_point] in diesem zoned_time. Nach der Aufgabe *this->get_local_time() == lt;

operator local_time

Kombiniert die zoned_timeZeitzone mit dem gespeicherten Zeitpunkt, um die Ortszeit in dieser Zeitzone zu erzeugen.

explicit operator local_time<duration>() const;

Rückgabewert

Ein time_point<local_t, Duration> Wert, der die Ortszeit für die Zeitzone in diesem zoned_timeBereich darstellt. Sie können den Komfortalias local_time verwenden, um einen von dieser Funktion zurückgegebenen Wert darzustellen.

Der Rückgabewert ist effektiv timeZone->to_local(get_sys_time());

Beispiel: 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

Ruft den in diesem zoned_time Bereich gespeicherten Zeitpunkt ab, ohne die Zeitzone anzuwenden.

operator sys_time<duration>() const;

Rückgabewert

Die in diesem zoned_timeBereich gespeicherte Zeit ohne Anpassung der Zeitzone. Die zurückgegebene sys_time ist ein Synonym für template <class Duration> time_point<system_clock Duration>; und stellt den gleichen Zeitpunkt dar, der in dieser zoned_timegespeichert ist.

Beispiel: 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

Siehe auch

<chrono>
time_point
time_zone
zoned_traits-Struktur
Referenz zu Headerdateien