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_time gespeicherten time_zone ab. |
operator= |
Weisen Sie den Wert eines anderen oder eines anderen zoned_time zoned_time Oder eines sys_time local_time anderen zu.zoned_time |
operator local_time |
Kombiniert die zoned_time Zeitzone 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_time
zu 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 c
keine Auswirkung.
14) Initialisiert die Zeitzone aus der Zeitzone und dem y
Uhrzeitpunkt.
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 c
keine 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_time
Zeitzone 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_time
Bereich 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_time
gespeichert ist.
TimeZonePtr get_time_zone() const;
Rückgabewert
Ein Zeiger auf die in dieser zoned_time
Datei 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_time
Datei zugewiesen time_point
werden soll.
lt
Dielocal_time
, die dem gespeicherten in dieser zoned_time
Datei 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_time
zu. 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_time
Zeitzone 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_time
Bereich 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_time
Bereich 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_time
gespeichert 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