Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Classe
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 stde 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 ltde 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_zonefichier .
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::latestz .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