Partager via


chooseenum

Utilisé avec time_zone et zoned_time pour indiquer comment gérer une conversion ambiguë ou inexistante local_time sys_time .

Syntaxe

enum class choose { // C++20
    earliest,
    latest
};

Membres

Element Description
earliest Si une conversion de temps est ambiguë, utilise le point de temps antérieur.
latest Si une conversion de temps est ambiguë, utilise le point de temps ultérieur.

Notes

Si le résultat de la conversion est un nonexistent_local_time, l’heure earliest et latest sont identiques.

Erreur de conversion ambiguë

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.

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, vous obtiendrez une ambiguous_local_time exception.

Erreur de conversion inexistante

Lors de la conversion de l’heure standard en heure d’été, un problème différent peut survenir. Pendant la transition entre l’heure standard et l’heure d’été au printemps, les horloges avancent d’une heure. L’heure ignorée disparaît, alors même si elle semble avoir ajouté une heure à l’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 est donc « inexistante », ce qui entraîne une nonexistent_local_time exception.

Spécifications

En-tête : <chrono> (depuis C++20)

Espace de noms : std::chrono

Option du compilateur :/std:c++latest est requise.

Voir aussi

to_sys
zoned_time constructeur