Classe nonexistent_local_time
Cette exception est levée lors de la tentative de conversion d’un local_time
en un non existant sys_time
.
Syntaxe
class nonexistent_local_time : public runtime_error; // C++20
Notes
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 est donc « inexistante ».
L’exemple suivant illustre une erreur de conversion de temps inexistante. Dans cet exemple, l’heure d’été à New York commence à 2h00. La durée de conversion est de 2 h 30. C’est pendant l’heure qui est supprimée en raison de la transition de l’heure standard à l’heure d’été. Par conséquent, une nonexistent_local_time
exception est levée.
Exemple : nonexistent_local_time
#include <chrono>
#include <iostream>
using namespace std::chrono;
int main()
{
try
{
// The following will throw an exception because the local time being converted is during
// the hour that is "removed" when the clock advances an hour for daylight saving time.
auto zt = zoned_time{"America/New_York", local_days{Sunday[2]/March/2016} + 2h + 30min};
} catch (const nonexistent_local_time& e)
{
std::cout << e.what() << '\n';
}
return 0;
}
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
Membres
Nom | Description |
---|---|
Constructeurs | Construisez un nonexistent_local_time . |
what |
Obtient une chaîne décrivant l’heure inexistante. |
Spécifications
En-tête :<chrono>
(depuis C++20)
Espace de noms :std::chrono
Option du compilateur :/std:c++latest
Constructeur
Construit un objet nonexistent_local_time
.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
Paramètres
tp
La local_time qui a échoué.
i
Informations sur la tentative de conversion. Pour plus d'informations, consultez local_info
.
Notes
En règle générale, vous ne créez pas cette exception. Elle est levée par des fonctions qui convertissent un local_time
sys_time
en .
what
Obtient une chaîne décrivant pourquoi l’heure n’existe pas.
[[nodiscard]] virtual const char* what() const noexcept;
Valeur retournée
Chaîne décrivant pourquoi le temps n’existe pas. Par exemple :
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
Voir aussi
<chrono>
to_sys
ambiguous_local_time
Informations de référence sur les fichiers d’en-tête
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour