Partager via


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_timeen .

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