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