time_zone
-Klasse
A time_zone
stellt die Zeitzone für einen bestimmten geografischen Bereich dar. Es enthält den vollständigen Verlauf der Zeitzonenregeln für jeden Bereich, sodass Zeitkonvertierungen korrekt sind, wenn Sie eine Uhrzeit für ein Datum zurückkonvertieren, wenn die Regeln für die Zeitzone unterschiedlich sind als heute.
Syntax
class time_zone; // Since C++20
Hinweise
Die <chrono>
Bibliothek erstellt time_zone
Objekte als Teil der Initialisierung der Zeitzonendatenbank. Sie bietet const
Zugriff auf die erstellten Objekte.
Sie können ein time_zone
Objekt nicht konstruieren oder kopieren, und die Verwendung des Standardmäßigen Verschiebungskonstruktors oder des Standardmäßigen Verschiebungszuweisungsoperators führt zu einem nicht definierten Verhalten.
So erhalten Sie eine time_zone
Instanz:
const auto& timeZoneDatabase = get_tzdb(); // initialize the time zone database
const auto& currentZone = timeZoneDatabase.current_zone();
Microsoft C++ unterstützt die time_zone
Klasse ab Visual Studio 2019, Version 16.10. Die time_zone
Klasse ist ein C++20-Feature. Die Compileroption /std:c++latest
ist erforderlich.
Member
Öffentliche Memberfunktionen und Funktionsvorlagen
Name | Beschreibung |
---|---|
get_info |
Ruft ein sys_info oder local_info dafür time_zone ab. |
name |
Ruft den Namen dieses time_zone ab. |
to_local |
Konvertiert ein sys_time in eins local_time in diesem time_zone . |
to_sys |
Konvertiert ein local_time in eins sys_time in diesem time_zone . |
Anforderungen
Header: <chrono>
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
get_info
Die Funktionsvorlage get_info
verfügt über zwei Überladungen, die eine sys_info
oder local_info
für diese time_zone
Funktion abrufen.
template<class Duration>
sys_info get_info(const sys_time<Duration>& st) const; // Since C++20
template<class Duration>
local_info get_info(const local_time<Duration>& lt) const; // Since C++20
Parameter
Duration
Die duration
Klasse für den sys_time
Oder-Parameter local_time
.
st
Der sys_time
Zeitpunkt, der zum Abrufen eines Ergebnisses sys_info
verwendet wird.
lt
Der local_time
Zeitpunkt, der zum Abrufen eines Ergebnisses local_info
verwendet wird.
Rückgabewert
In der get_info
Funktionsvorlage, die einen sys_time
Zeitpunkt st
benötigt, wird ein sys_info
Objekt i
zurückgegeben, das st
sich im Bereich [i.begin, i.end)
befindet.
In der get_info
Funktionsvorlage, die einen local_time
Zeitpunkt lt
benötigt, wird ein local_info
Objekt zurückgegeben.
Hinweise
Microsoft C++ unterstützt time_zone::get_info
ab Visual Studio 2019, Version 16.10. Die Funktion ist ein C++20-Feature, das die /std:c++latest
Compileroption erfordert.
name
Ruft den Namen dieses time_zone
ab.
string_view name() const noexcept; // Since C++20
Rückgabewert
Gibt den Namen der Zeitzone als ein string_view
.
Hinweise
Microsoft C++ unterstützt time_zone::name
ab Visual Studio 2019, Version 16.10.
to_local
Die Funktionsvorlage to_local
konvertiert eine sys_time
in eine local_time
in dieser time_zone
Datei.
template<class Duration>
local_time<common_type_t<Duration, seconds>>
to_local(const sys_time<Duration>& st) const; // Since C++20
Parameter
Duration
Die duration
Klasse für den sys_time
Oder-Parameter local_time
.
st
Der sys_time
Zeitpunkt, der zum Abrufen eines Ergebnisses sys_info
verwendet wird.
Rückgabewert
to_local
gibt die local_time
zugeordnete st
in dieser .time_zone
Hinweise
Microsoft C++ unterstützt time_zone::to_local
ab Visual Studio 2019, Version 16.10. Die Funktion ist ein C++20-Feature, das die /std:c++latest
Compileroption erfordert.
Beispiel: Konvertieren sys_time
in local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& timeZoneDatabase = get_tzdb();
const auto& currentZone = timeZoneDatabase.current_zone();
local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());
std::cout << "local_time: " << lt << "\n";
return 0;
}
local_time: 2021-09-08 15:15:53.1830646
to_sys
Die Funktionsvorlage to_sys
verfügt über zwei Überladungen, die eine local_time
in eine time_zone
sys_time
dieser Funktionen konvertieren.
template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt) const; // Since C++20
template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt, choose z) const; // Since C++20
Parameter
Duration
Die duration
Klasse für den local_time
Parameter.
lt
Der local_time
zu konvertierende Zeitpunkt.
z
Ein Wert von choose::earliest
oder choose::latest
. Es wird verwendet, um andernfalls mehrdeutige Ergebnisse aufzulösen.
Rückgabewert
to_sys
gibt ein sys_time
, das mindestens so gut ist wie seconds
. Es ist feiner, wenn das Argument lt
eine feinere Genauigkeit aufweist. Die Zurückgegebene sys_time
ist das UTC-Äquivalent lt
gemäß den Regeln dieses time_zone.
Die Ein-Parameter-Überladung löst eine ambiguous_local_time
Ausnahme aus, wenn die Konvertierung von lt
zu einem sys_time
mehrdeutigen ist, und eine nonexistent_local_time
Ausnahme, wenn der lokale Zeitpunkt einen nicht vorhandenen lokalen Zeitpunkt darstellt. Mehrdeutigkeit kann während einer Sommerzeit bis zum Standardzeitübergang passieren. Zwei Instanzen desselben lokalen Zeitpunkts können an einem Tag auftreten. Ein nicht vorhandener lokaler Zeitpunkt stellt einen Zeitpunkt im Übergang von Standardzeit zu Sommerzeit dar.
Die Überladung mit zwei Parametern löst in diesen Fällen keine Ausnahme aus. Wenn die Konvertierung von lt
zu einem sys_time
mehrdeutigen ist, to_sys
gibt die frühere sys_time
Ist-Eigenschaft choose::earliest
z
zurück und gibt den späteren sys_time
Wert zurück, wenn z
dies der Wert istchoose::latest
. Wenn dies lt
eine nicht vorhandene Zeit zwischen zwei UTC-Zeitpunkten darstellt, sind die beiden UTC-Zeitpunkte identisch, sodass to_sys
der UTC-Zeitpunkt zurückgegeben wird.
Hinweise
Microsoft C++ unterstützt time_zone::to_sys
ab Visual Studio 2019, Version 16.10. Die Funktion ist ein C++20-Feature, das die /std:c++latest
Compileroption erfordert.
Beispiel: Konvertieren local_time
in sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& timeZoneDatabase = get_tzdb();
const auto& currentZone = timeZoneDatabase.current_zone();
auto st = currentZone->to_sys(local_days{2021y/September/15d}+16h+45min, choose::earliest);
std::cout << "sys_time: " << st << "\n";
return 0;
}
sys_time: 2021-09-15 23:45:00.0000000