Share via


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 /std:c++latest Compileroption 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

Siehe auch

<chrono>
Referenz zu Headerdateien