Partager via


struct local_info

Fournit une interface de bas niveau en informations de fuseau horaire sur le résultat de la conversion d’un local_time en un sys_time.

Syntaxe

struct local_info;

Membres

Fonction Description
result Code décrivant le résultat de la conversion.
first, second Résultat de la conversion.

Constantes de membre

Nom Valeur Description
unique 0 Le résultat de la conversion est unique.
nonexistent 1 Il n’y a pas de correspondance sys_time à convertir.local_time
ambiguous 2 Le résultat de la conversion est ambigu.

Non-membres

Fonction Description
operator<< Sortie d’un local_info flux.

result

Résultat de la conversion d’un local_time sys_timeen .

int result;

Valeur retournée

Le résultat peut être l’une des valeurs suivantes :

  • unique: le résultat local_time a été converti en sys_time.
  • nonexistent: Il n’y a pas de mappage entre le local_time sys_time.
  • ambiguous: les local_time terres pendant une transition entre l’heure d’été et l’heure standard et peuvent donc être converties en deux sys_time valeurs.

Notes

Pour plus d’informations sur la façon first dont et second sont définies en fonction resultde , consultez la section suivante surfirst , second.

first, second

Fournit le résultat de la conversion d’un local_time en .sys_time

sys_seconds begin;
sys_seconds end;

Valeur retournée

first et second sont définis en fonction result des éléments suivants :

result first second
unique Contient la valeur de local_time conversion en sys_time zéro initialisé
nonexistent Un sys_info qui se termine juste avant le local_time Un sys_info qui commence juste après le local_time.
ambiguous Un sys_info qui se termine juste après le local_time Un sys_info qui commence juste avant le local_time.

ambiguous code de résultat

Pendant la transition de l’heure d’été à l’heure standard à l’automne, les horloges gagnent essentiellement une heure supplémentaire. Cela peut être déroutant parce que la transition vers le temps standard signifie perdre une heure ? En revenant une heure, l’heure avant la transition sera répétée après l’ajustement de l’horloge pour l’heure standard. Considérez le changement de l’heure standard à New York, qui se produit le premier dimanche en novembre à 2h00. Tout d’abord, 1h00 va. À 2h00, l’horloge passe à l’heure standard, c’est donc à nouveau 1h00. Cela signifie que le temps entre 1h et 2h sera « répété », ajoutant effectivement une heure. Pour obtenir un exemple, consultez ambiguous_local_time.

Si une local_time heure spécifiée pendant cette heure « supplémentaire », il n’est pas clair comment la convertir. L’heure convertie doit-elle être traitée comme la « première » fois que cette heure se produit, ou la « seconde » ? Si l’énumération choose n’est pas spécifiée pour indiquer ce qu’elle doit être, attendez-vous result à être définie ambiguoussur , et first second reflète les deux choix pour l’heure à laquelle la local_time conversion peut être effectuée.

nonexistent code de résultat

Pendant la transition entre l’heure standard et l’heure d’été au printemps, les horloges perdent essentiellement une heure. Cela peut être déroutant, car la transition vers l’heure d’été signifie-t-elle ajouter une heure ? En « ressortant vers l’avant » une heure, l’heure qui suit la transition est effectivement supprimée. Considérez le changement de l’heure d’été à New York, qui se produit le deuxième dimanche en mars à 2h. À 2 h, l’horloge passe à l’heure d’été et lit maintenant 3 h 00. Si la local_time conversion est de 2 h 30, par exemple, cette heure est au cours de la période « supprimée » et vous pouvez donc vous attendre result à avoir le nonexistent code. Pour obtenir un exemple, consultez nonexistent_local_time.

Exemple : obtenir un local_info

// 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());

    auto localInfo = currentZone->get_info(lt);

    std::cout << "local_time: " << lt << "\n";
    std::cout << localInfo << "\n";

    return 0;
}
local_time: 2021-09-08 15:37:57.6853963
result: unique, first: (begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT)

Spécifications

En-tête : <chrono>

Espace de noms : std::chrono

Option du compilateur : /std:c++latest

<chrono>
ambiguous_local_time exception
Enum choose
file_clock, classe
high_resolution_clock
Struct local_t
non_existent exception
Struct system_clock
tai_clock, classe
utc_clock, classe
Informations de référence sur les fichiers d’en-tête