Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ermöglicht es Ihnen, einer anderen Standardzeitzone eine zoned_timeandere Standardzeitzone zuzuordnen und optional einen benutzerdefinierten Namen einer Zeitzone zuzuordnen.
Syntax
1)
template<class T>
struct zoned_traits {}; // C++20
2)
template <>
struct zoned_traits<const time_zone*>; // C++20
Parameter
1) T - Ein Zeiger auf einen Typ, der eine benutzerdefinierte time_zone.
2) Wenn Sie das time_zone* Vorlagenargument nicht angeben, stellt const std::chrono::time_zone*diese Spezialisierung bereit, die standardmäßig die UTC-Zeitzone aufweist.
Hinweise
Der Zeiger auf den typ, den Sie bereitstellen, muss nicht die statischen Funktionen default_zone() oder locate_zone(). Wenn dies nicht der Derb ist, werden die Konstruktoren während der zoned_time Überladungsauflösung nicht berücksichtigt.
Mitglieder
| Name | Beschreibung |
|---|---|
default_zone |
Ruft den time_zone Zeiger für die Standardzeitzone ab. |
locate_zone |
Ruft den time_zone Zeiger für die angegebene Zeitzone ab. |
Anforderungen
Header: <chrono>
Namespace:std::chrono
Compileroption: /std:c++latest
Microsoft C++ unterstützt zoned_traits die 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.
default_zone
Ruft die time_zone für die Standardzeitzone ab. Weitere Informationen zur Funktionsweise finden Sie im Codebeispiel am Ende dieses Themas.
static const time_zone* default_zone();
Rückgabewert
Wenn das Vorlagenargument nicht angegeben wird, stellt die Vorlagenspezialisierung bereit zoned_traits<const time_zone*>, die die UTC-Zeitzone zurückgibt. Andernfalls wird die Standardzeitzone zurückgegeben, die vom Vorlagenargument Tbereitgestellt wird.
locate_zone
Gibt den time_zone Zeiger für die angegebene Zeitzone zurück. Weitere Informationen zur Funktionsweise finden Sie im Codebeispiel am Ende dieses Themas.
static const time_zone* locate_zone(string_view name);
Vorlagenparameter
name
Der Name der zu suchenden Zeitzone. Beispiel: "UTC".
Rückgabewert
Wenn Sie ein zoned_traits Argument ohne Angabe des Vorlagenarguments eines benutzerdefinierten Zeitzonenzeigers erstellt haben, lautet std::chrono::locate_zone(name)der Rückgabewert . Andernfalls wird der Wert der locate_zone() im Vorlagenargument Tdefinierten Werte zurückgegeben.
Beispiel: zoned_traits
In diesem folgenden Beispiel wird gezeigt, wie Sie zoned_traits eine benutzerdefinierte Standardzeitzone angeben.
CustomTimeZonePtr Zunächst wird definiert, der den Zeiger auf den benutzerdefinierten Zeitzonentyp übergibtoperator->().
Anschließend wird eine zoned_traits deklariert, in der default_zone definiert ist, um die benutzerdefinierte Standardzeitzone zurückzugeben. In diesem Fall der Südpol.
Übergeben Sie im Beispiel zoned_traits<CustomTimeZonePtr>::locate_zone() den angegebenen Zeitzonennamen an std::chrono::locate_zone(). Mit dieser Funktion können Sie einen benutzerdefinierten Zeitzonennamen einer anderen Zeitzone zuordnen.
stdZT Schließlich wird definiert, was den Standardzeiger time_zone verwendet, da es kein Vorlagenargument bereitstellt, sodass die Spezialisierung verwendet wird, die bereitgestellt const std::chrono::time_zone*wird.
Führen Sie dieses Beispiel aus, time_zone um die Verwendung der zoned_time benutzerdefinierten Und dann den Standardzeiger anzuzeigen.
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
struct CustomTimeZonePtr
{
CustomTimeZonePtr() {}
CustomTimeZonePtr(const time_zone* tz) : tzptr(tz) {}
const time_zone* operator->() const
{
return tzptr;
}
private:
const time_zone* tzptr;
};
template <>
struct zoned_traits<CustomTimeZonePtr>
{
static const CustomTimeZonePtr default_zone()
{
return CustomTimeZonePtr{ locate_zone("Antarctica/South_Pole") };
}
static const CustomTimeZonePtr locate_zone(std::string_view name)
{
// Here you can provide your own mapping between the name
// parameter and another time zone before passing it to locate_zone()
return CustomTimeZonePtr{ std::chrono::locate_zone(name) };
}
};
int main()
{
std::cout << "-- Custom time zone pointer with specialized zoned_traits and different default zone behavior --\n";
zoned_time<seconds, CustomTimeZonePtr> myZT;
std::cout << myZT.get_info() << "\n";
std::cout << "-- Built-in time zone pointer with standard zoned_traits --\n";
zoned_time<seconds, const time_zone*> stdZT;
std::cout << stdZT.get_info() << "\n";
return 0;
}
-- Custom time zone pointer with specialized zoned_traits and different default zone behavior --
begin: 1945-12-31 12:00:00, end: 1974-11-02 14:00:00, offset: 43200s, save: 0min, abbrev: GMT+12
-- Built-in time zone pointer with standard zoned_traits --
begin: -32767-01-01 00:00:00, end: 32767-12-31 23:59:59, offset: 0s, save: 0min, abbrev: UTC
Siehe auch
<chrono>
time_zone
zoned_time-Klasse
Referenz zu Headerdateien