Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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_zoneab. |
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_zoneFunktion 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 stbenö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 ltbenö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_zoneDatei.
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_localgibt 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_zonesys_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::earliestz 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