choose
enum
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.