Classe time_zone
Représente time_zone
le fuseau horaire d’une zone géographique spécifique. Il a l’historique complet des règles de fuseau horaire pour chaque zone afin que les conversions d’heure soient précises si vous convertissez une heure pour une date de retour lorsque les règles sont différentes pour le fuseau horaire qu’elles sont aujourd’hui.
Syntaxe
class time_zone; // Since C++20
Notes
La <chrono>
bibliothèque crée des time_zone
objets dans le cadre de son initialisation de base de données de fuseau horaire. Il fournit const
l’accès aux objets créés.
Vous ne pouvez pas construire ou copier un time_zone
objet, et l’utilisation du constructeur de déplacement par défaut ou de l’opérateur d’affectation de déplacement par défaut entraîne un comportement non défini.
Voici comment obtenir une time_zone
instance :
const auto& timeZoneDatabase = get_tzdb(); // initialize the time zone database
const auto& currentZone = timeZoneDatabase.current_zone();
Microsoft C++ prend en charge la time_zone
classe à partir de Visual Studio 2019 version 16.10. La time_zone
classe est une fonctionnalité C++20. L'option de compilation /std:c++latest
est requise.
Membres
Fonctions et modèles de fonction membres publics
Nom | Description |
---|---|
get_info |
Obtient une sys_info ou local_info pour cela time_zone . |
name |
Obtient le nom de cet objet time_zone . |
to_local |
Convertit un sys_time en un local_time dans ce time_zone . |
to_sys |
Convertit un local_time en un sys_time dans ce time_zone . |
Spécifications
En-tête : <chrono>
Les données de fuseau horaire sont disponibles uniquement pour Windows 10 version 1903/19H1 et ultérieures, et Windows Server 2022 et versions ultérieures.
Espace de noms : std::chrono
get_info
Le modèle get_info
de fonction a deux surcharges qui obtiennent un sys_info
ou local_info
pour cela time_zone
.
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
Paramètres
Duration
Classe duration
pour le ou local_time
le sys_time
paramètre.
st
Point sys_time
de temps utilisé pour obtenir un sys_info
résultat.
lt
Point local_time
de temps utilisé pour obtenir un local_info
résultat.
Valeur retournée
Dans le get_info
modèle de fonction qui prend un sys_time
point st
de temps, il retourne un sys_info
objet i
tel qu’il st
se trouve dans la plage [i.begin, i.end)
.
Dans le get_info
modèle de fonction qui prend un local_time
point lt
de temps, il retourne un local_info
objet.
Notes
Microsoft C++ prend en charge time_zone::get_info
le démarrage de Visual Studio 2019 version 16.10. La fonction est une fonctionnalité C++20 qui nécessite l’option du /std:c++latest
compilateur.
name
Obtient le nom de cet objet time_zone
.
string_view name() const noexcept; // Since C++20
Valeur retournée
Retourne le nom du fuseau horaire en tant que string_view
.
Notes
Microsoft C++ prend en charge time_zone::name
le démarrage de Visual Studio 2019 version 16.10.
to_local
Le modèle to_local
de fonction convertit un sys_time
en un local_time
dans ce time_zone
.
template<class Duration>
local_time<common_type_t<Duration, seconds>>
to_local(const sys_time<Duration>& st) const; // Since C++20
Paramètres
Duration
Classe duration
pour le ou local_time
le sys_time
paramètre.
st
Point sys_time
de temps utilisé pour obtenir un sys_info
résultat.
Valeur retournée
to_local
retourne l’associé local_time
dans st
ce time_zone
fichier .
Notes
Microsoft C++ prend en charge time_zone::to_local
le démarrage de Visual Studio 2019 version 16.10. La fonction est une fonctionnalité C++20 qui nécessite l’option du /std:c++latest
compilateur.
Exemple : convertir sys_time
en 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
Le modèle to_sys
de fonction a deux surcharges qui convertissent un local_time
en un sys_time
dans ce time_zone
.
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
Paramètres
Duration
Classe duration
du local_time
paramètre.
lt
Point local_time
de temps à convertir.
z
Valeur de choose::earliest
ou choose::latest
. Il est utilisé pour résoudre les résultats ambigus.
Valeur retournée
to_sys
retourne une sys_time
valeur qui est au moins aussi fine que seconds
. Il est plus fin si l’argument lt
a une précision plus fine. Le retour sys_time
est l’équivalent UTC selon lt
les règles de cette time_zone.
La surcharge un paramètre lève une ambiguous_local_time
exception si la conversion vers lt
un sys_time
est ambiguë et une nonexistent_local_time
exception si le point de temps local représente un point de temps local inexistant. L’ambiguïté peut se produire pendant une période d’été à la transition de temps standard. Deux instances du même point de temps local peuvent se produire dans un jour. Un point de temps local inexistant représente un point de temps dans la transition de l’heure standard à l’heure d’été.
La surcharge à deux paramètres ne lève pas d’exception dans ces cas. Si la conversion d’une valeur est ambiguë, to_sys
retourne la valeur antérieure sys_time
si z
c’est choose::earliest
, et retourne la version ultérieure sys_time
si c’est choose::latest
z
.lt
sys_time
Si la lt
valeur représente une heure inexistante entre deux points d’heure UTC, les deux points de temps UTC sont identiques, donc to_sys
retourne ce point de temps UTC.
Notes
Microsoft C++ prend en charge time_zone::to_sys
le démarrage de Visual Studio 2019 version 16.10. La fonction est une fonctionnalité C++20 qui nécessite l’option du /std:c++latest
compilateur.
Exemple : convertir local_time
en 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
Voir aussi
<chrono>
Informations de référence sur les fichiers d’en-tête