std::chrono:: zoned_time
|
Défini dans l'en-tête
<chrono>
|
||
|
template
<
class
Duration,
|
(depuis C++20) | |
|
using
zoned_seconds
=
std
::
chrono
::
zoned_time
<
std::
chrono
::
seconds
>
;
|
(depuis C++20) | |
La classe
zoned_time
représente un appariement logique d'un fuseau horaire et d'un
std::chrono::time_point
dont la résolution est
Duration
.
Un invariant de
zoned_time
est qu'il fait toujours référence à un fuseau horaire valide et représente un point temporel existant et non ambigu dans ce fuseau horaire. Conformément à cet invariant,
zoned_time
n'a pas de constructeur de déplacement ni d'opérateur d'affectation par déplacement ; les tentatives de déplacement d'un
zoned_time
effectueront une copie.
Le programme est mal formé si
Duration
n'est pas une spécialisation de
std::chrono::duration
.
Le paramètre de modèle
TimeZonePtr
permet aux utilisateurs de fournir leurs propres types de pointeurs de fuseau horaire et de personnaliser davantage le comportement de
zoned_time
via
std::chrono::zoned_traits
. Les types de fuseaux horaires personnalisés n'ont pas besoin de supporter toutes les opérations prises en charge par
std::chrono::time_zone
, seulement celles utilisées par les fonctions réellement appelées sur le
zoned_time
.
TimeZonePtr
doit être
MoveConstructible
. Les
TimeZonePtr
uniquement déplaçables sont autorisés mais difficiles à utiliser, car le
zoned_time
sera immuable et il ne sera pas possible d'accéder au
TimeZonePtr
stocké.
Table des matières |
Types membres
| Type de membre | Définition |
duration
|
std:: common_type_t < Duration, std:: chrono :: seconds > |
Fonctions membres
construit un
zoned_time
(fonction membre publique) |
|
assigne une valeur à un
zoned_time
(fonction membre publique) |
|
|
obtient une copie du pointeur de fuseau horaire
(fonction membre publique) |
|
obtient le point temporel stocké sous forme de
local_time
(fonction membre publique) |
|
obtient le point temporel stocké sous forme de
sys_time
(fonction membre publique) |
|
|
obtient des informations sur le fuseau horaire au point temporel stocké
(fonction membre publique) |
Fonctions non membres
|
(C++20)
|
compare deux valeurs
zoned_time
(modèle de fonction) |
|
(C++20)
|
écrit un
zoned_time
dans un flux
(modèle de fonction) |
Classes d'assistance
prise en charge du formatage pour
zoned_time
(spécialisation de modèle de classe) |
|
|
prise en charge du hachage pour
std::chrono::zoned_time
(spécialisation de modèle de classe) |
Spécialisations d'assistance
|
template
<
class
Duration
>
constexpr
bool
enable_nonlocking_formatter_optimization
|
(depuis C++23) | |
Cette spécialisation de
std::enable_nonlocking_formatter_optimization
permet une implémentation efficace de
std::print
et
std::println
pour l'affichage d'un objet
chrono::zoned_time
.
Guides de déduction
Exemple
#include <algorithm> #include <chrono> #include <iomanip> #include <iostream> #include <stdexcept> #include <string_view> int main() { constexpr std::string_view locations[] = { "Africa/Casablanca", "America/Argentina/Buenos_Aires", "America/Barbados", "America/Indiana/Petersburg", "America/Tarasco_Bar", "Antarctica/Casey", "Antarctica/Vostok", "Asia/Magadan", "Asia/Manila", "Asia/Shanghai", "Asia/Tokyo", "Atlantic/Bermuda", "Australia/Darwin", "Europe/Isle_of_Man", "Europe/Laputa", "Indian/Christmas", "Indian/Cocos", "Pacific/Galapagos", }; constexpr auto width = std::ranges::max_element(locations, {}, [](const auto& s){ return s.length(); })->length(); for (const auto location : locations) try { // peut lever une exception si 'location' n'est pas dans la base de données des fuseaux horaires const std::chrono::zoned_time zt{location, std::chrono::system_clock::now()}; std::cout << std::setw(width) << location << " - Heure avec fuseau : " << zt << '\n'; } catch (std::runtime_error& ex) { std::cout << "Erreur : " << ex.what() << '\n'; } }
Sortie possible :
Africa/Casablanca - Heure avec fuseau : 2023-06-29 20:58:34.697449319 +01
America/Argentina/Buenos_Aires - Heure avec fuseau : 2023-06-29 16:58:34.709957354 -03
America/Barbados - Heure avec fuseau : 2023-06-29 15:58:34.709977888 AST
America/Indiana/Petersburg - Heure avec fuseau : 2023-06-29 15:58:34.709998072 EDT
Erreur : tzdb: cannot locate zone: America/Tarasco_Bar
Antarctica/Casey - Heure avec fuseau : 2023-06-30 06:58:34.710093685 +11
Antarctica/Vostok - Heure avec fuseau : 2023-06-30 01:58:34.710107932 +06
Asia/Magadan - Heure avec fuseau : 2023-06-30 06:58:34.710121831 +11
Asia/Manila - Heure avec fuseau : 2023-06-30 03:58:34.710134751 PST
Asia/Shanghai - Heure avec fuseau : 2023-06-30 03:58:34.710153259 CST
Asia/Tokyo - Heure avec fuseau : 2023-06-30 04:58:34.710172815 JST
Atlantic/Bermuda - Heure avec fuseau : 2023-06-29 16:58:34.710191043 ADT
Australia/Darwin - Heure avec fuseau : 2023-06-30 05:28:34.710236720 ACST
Europe/Isle_of_Man - Heure avec fuseau : 2023-06-29 20:58:34.710256834 BST
Erreur : tzdb: cannot locate zone: Europe/Laputa
Indian/Christmas - Heure avec fuseau : 2023-06-30 02:58:34.710360409 +07
Indian/Cocos - Heure avec fuseau : 2023-06-30 02:28:34.710377520 +0630
Pacific/Galapagos - Heure avec fuseau : 2023-06-29 13:58:34.710389952 -06
Voir aussi
|
(C++20)
|
représente un fuseau horaire
(classe) |