Partager via


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_timefichier .
operator= Affectez la valeur d’un autre zoned_time, ou d’un autre ou sys_timed’un local_time autre zoned_timeà ceci zoned_time.
operator local_time Combine le zoned_timefuseau 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, , cn’a aucun effet.
14) Initialise le fuseau horaire à partir du fuseau horaire et du ypoint de temps.
15) Initialise le fuseau horaire avec std::move(z) et l’heure du point de ytemps.
16) Équivalent à la construction avec {z, y}. Le choose paramètre, , cn’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_timedu 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_clockfichier .

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_timefichier .

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_timesys_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_timefichier .

lt
À local_time affecter à l’objet stocké time_point dans ce zoned_timefichier .

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_timefuseau 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