Classe zoned_time
A zoned_time
est un jumelage d’un time_zone
et d’un time_point
. Il donne une time_point
signification dans un fuseau horaire spécifique.
Syntaxe
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ; // C++20
Notes
A zoned_time
fait toujours référence à un fuseau horaire valide et représente un point dans le temps qui existe et n’est pas ambigu dans ce fuseau horaire.
Membres
Nom | Description |
---|---|
Constructeurs | Construisez un zoned_time . |
get_info |
Utilise le fuseau horaire dans ce zoned_time cas pour obtenir des informations sur le point de temps dans le zoned_time . |
get_local_time |
Combine le fuseau horaire dans le zoned_time fuseau horaire avec le point de temps stocké pour produire l’heure locale dans ce fuseau horaire. |
get_sys_time |
Obtient le point de temps stocké dans ce zoned_time cas sans appliquer le fuseau horaire. |
get_time_zone |
Obtient le time_zone stocké dans ce zoned_time fichier . |
operator= |
Affectez la valeur d’un autre zoned_time , ou d’un autre ou sys_time d’un local_time autre zoned_time à ceci zoned_time . |
operator local_time |
Combine le zoned_time fuseau horaire du fuseau horaire avec le point de temps stocké pour produire l’heure locale dans ce fuseau horaire. |
operator sys_time |
Obtient l’heure stockée dans ce zoned_time domaine sans appliquer le fuseau horaire. |
Non-membres
Nom | Description |
---|---|
operator== |
Déterminez si deux zoned_time instances sont égales. |
operator<< |
Sortie d’un zoned_time flux donné. |
Alias de type pratique
Nom | Description |
---|---|
zoned_seconds |
Synonyme de zoned_time<seconds>; |
zoned_time::duration |
Durée mesurée en secondes. C’est un synonyme de common_type_t<Duration, seconds>; |
Spécifications
En-tête : <chrono>
Microsoft C++ prend en charge la zoned_time
classe à partir de Visual Studio 2019 version 16.10.
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
Option du compilateur : /std:c++latest
Constructeurs
Construisez un zoned_time
.
1) zoned_time();
2) zoned_time(const zoned_time& zt) = default;
3) explicit zoned_time(TimeZonePtr z);
4) zoned_time(const sys_time<Duration>& st);
5) explicit zoned_time(string_view name);
6) zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
7) zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
8) zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
9) zoned_time(string_view name, const local_time<Duration>& tp);
10) zoned_time(string_view name, const local_time<Duration>& tp, choose c);
11) zoned_time(string_view name, const sys_time<Duration>& st);
12) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y);
13) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y, choose c);
14) template<class Duration> zoned_time(const zoned_time<Duration, TimeZonePtr>& y);
15) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y);
16) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y, choose);
Paramètres
c
Indique comment gérer les heures locales ambiguës ou inexistantes lors de la conversion d’un local_time
en .sys_time
Pour plus d’informations, consultez choose
énumération.
name
Nom d’un fuseau horaire.
st
Avec sys_time
une durée spécifiée. Utilisé pour définir l’heure.
tp
Avec local_time
une durée spécifiée. Utilisé pour définir l’heure.
y
Copié zoned_time
pour construire un nouveau zoned_time
.
z
C’est time_zone
std::move(z)
-à-dire dans la construction zoned_time
.
zt
Pointeur zoned_time
qui est std::move(zt)
'd dans la construction zoned_time
.
Notes
1) Initialise le fuseau horaire avec traits::default_zone()
, et construit par défaut le point de temps.
2) Constructeur de copie par défaut.
3) Initialise le fuseau horaire avec std::move(z)
, et construit par défaut le point de temps.
4) Initialise le fuseau horaire avec traits::default_zone()
, et l’heure avec st
.
5) Initialise le fuseau horaire avec traits::locate_zone(name)
et construit par défaut le point de temps.
6) Initialise le fuseau horaire avec std::move(z)
, et l’heure en convertissant tp
comme si par z->to_sys(tp)
.
7) Initialise le fuseau horaire avec std::move(z)
, et l’heure comme si .z->to_sys(tp, c)
Consultez choose
l’énumération pour savoir comment le paramètre c
affecte le résultat.
8) Initialise le fuseau horaire avec std::move(z)
, et l’heure avec st
.
9) Équivalent à la construction avec {traits::locate_zone(name), tp}
.
10) Équivalent à la construction avec {traits::locate_zone(name), tp, c}
.
11) Équivalent à la construction avec {traits::locate_zone(name), st}
.
12) Équivalent à la construction avec {traits::locate_zone(name), y}
.
13) Équivalent à la construction avec {traits::locate_zone(name), y, c}
. Le choose
paramètre, , c
n’a aucun effet.
14) Initialise le fuseau horaire à partir du fuseau horaire et du y
point de temps.
15) Initialise le fuseau horaire avec std::move(z)
et l’heure du point de y
temps.
16) Équivalent à la construction avec {z, y}
. Le choose
paramètre, , c
n’a aucun effet.
Remarque
zoned_time
n’a pas de constructeur de déplacement. La tentative de déplacement entraîne une copie à l’aide du constructeur de copie par défaut.
Exemple : construire un zoned_time
L’exemple suivant montre comment créer une zoned_time
instance pour le fuseau horaire "Antarctica/Casey"
, le 15/09/2021 à 14h45 :
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt;
return 0;
}
2021-09-16 03:45:00 GMT+11
get_info
Utilise le fuseau horaire dans ce zoned_time
cas pour obtenir des informations sur le point de temps dans le zoned_time
.
sys_info get_info() const;
Valeur retournée
Qui sys_info
contient le décalage UTC pour le fuseau horaire et l’heure, le décalage d’ajustement de l’heure d’été, et ainsi de suite.
Exemple : get_info
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
sys_info si = zt.get_info();
std::cout << si;
return 0;
}
begin: 2020-10-03 16:01:00, end: 32767-12-31 23:59:59, offset: 39600s, save: 0min, abbrev: GMT+11
get_local_time
Obtient un local_time<duration>
qui représente l’heure locale en fonction zoned_time
du fuseau horaire et du point de temps.
local_time<duration> get_local_time() const;
Valeur retournée
Le retour local_time
est un synonyme de time_point<local_t, duration>
.
Exemple : get_local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt.get_info();
return 0;
}
2021-09-16 03:45:00
get_sys_time
Obtient l’heure stockée dans le zoned_time
system_clock
fichier .
sys_time<duration> get_sys_time() const;
Valeur retournée
Heure stockée dans ce zoned_time
, sans ajustement pour le fuseau horaire. Il représente l’heure du mur à l’échelle du système en tant que time_point. Le retour sys_time
est un synonyme de template <class Duration> time_point<system_clock Duration>;
Exemple : get_sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
std::cout << zt.get_sys_time();
return 0;
}
2021-09-15 16:45:00
get_time_zone
Obtient le fuseau horaire stocké dans ce zoned_time
.
TimeZonePtr get_time_zone() const;
Valeur retournée
Pointeur vers la time_zone stockée dans ce zoned_time
fichier .
Exemple : get_time_zone
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
auto pTZ = zt.get_time_zone();
std::cout << pTZ->name();
return 0;
}
Antarctica/Casey
operator=
Attribuez-en zoned_time
un autre this
. Ou affecter simplement les autres zoned_time
sys_time
ou local_time
.
1) zoned_time& operator=(const zoned_time& zt) = default;
2) zoned_time& operator=(const sys_time<Duration>& st);
3) zoned_time& operator=(const local_time<Duration>& lt);
Paramètres
zt
À zoned_time
attribuer à this
un.
st
À sys_time
affecter à l’objet stocké time_point
dans ce zoned_time
fichier .
lt
À local_time
affecter à l’objet stocké time_point
dans ce zoned_time
fichier .
Valeur retournée
*this
Exemple : operator=
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt1{}, zt2("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
std::cout << zt2.get_local_time() << "\n";
zt1 = zt2.get_local_time();
std::cout << zt1.get_local_time();
return 0;
}
2021-09-15 10:45:00
2021-09-15 10:45:00
Notes
1) Opérateur d’affectation de copie par défaut. Copie (ne déplace pas) le pointeur stocké time_point
et time_zone de l’autre zoned_time
vers cet objet zoned_time
.
2) Assigne st
au time_point
présent zoned_time
. Après l’affectation, *this->get_sys_time() == st;
3) Convertit lt
(a local_time
) en un sys_time
. Il fait cela essentiellement comme timeZone->to_sys(lt)
, et affecte le résultat au [time_point
] dans ce zoned_time
. Après l’affectation, *this->get_local_time() == lt;
operator local_time
Combine le zoned_time
fuseau horaire du fuseau horaire avec le point de temps stocké pour produire l’heure locale dans ce fuseau horaire.
explicit operator local_time<duration>() const;
Valeur retournée
Qui time_point<local_t, Duration>
représente l’heure locale pour le fuseau horaire et le fuseau horaire dans ce zoned_time
. Vous pouvez utiliser l’alias local_time
pratique pour représenter une valeur retournée par cette fonction.
La valeur de retour est effectivement timeZone->to_local(get_sys_time());
Exemple : operator local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Pacific/Galapagos", sys_days{ 2021y / September / 15d } + 16h + 45min);
std::cout << (local_time<seconds>)zt;
return 0;
}
2021-09-15 10:45:00
operator sys_time
Obtient le point de temps stocké dans ce zoned_time
cas sans appliquer le fuseau horaire.
operator sys_time<duration>() const;
Valeur retournée
Heure stockée dans ce zoned_time
, sans ajustement pour le fuseau horaire. Le retour sys_time
est un synonyme et template <class Duration> time_point<system_clock Duration>;
représente le même point dans le temps que celui stocké dans ce zoned_time
.
Exemple : operator sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
zoned_time zt("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
std::cout << (sys_time<seconds>)zt;
return 0;
}
2021-09-15 16:45:00
Voir aussi
<chrono>
time_point
time_zone
Struct zoned_traits
Informations de référence sur les fichiers d’en-tête