Freigeben über


nonexistent_local_time-Klasse

Diese Ausnahme wird ausgelöst, wenn versucht wird, eine local_time in ein nicht vorhandenes sys_timezu konvertieren.

Syntax

class nonexistent_local_time : public runtime_error; // C++20

Hinweise

Während des Übergangs von Standardzeit zu Sommerzeit im Frühling verlieren die Uhren im Wesentlichen eine Stunde. Dies kann verwirrend sein, weil der Übergang zur Sommerzeit nicht bedeutet, eine Stunde hinzuzufügen? Durch "Vorwärts springen" eine Stunde wird die Stunde nach dem Übergang effektiv entfernt. Berücksichtigen Sie die Änderung der Sommerzeit in New York, die am zweiten Sonntag im März um 2 Uhr geschieht. Um 2:00 Uhr wechselt die Uhr zur Sommerzeit und liest jetzt 3:00 Uhr. Wenn die local_time Konvertierte beispielsweise 2:30 Uhr ist, liegt diese Zeit in dem Zeitraum, der "entfernt" wurde, und dies ist "nicht vorhanden".

Im folgenden Beispiel wird ein nicht vorhandener Zeitkonvertierungsfehler veranschaulicht. In diesem Beispiel beginnt die Sommerzeit in New York um 2:00 Uhr. Die Konvertierungszeit beträgt 2:30 Uhr. Das ist während der Stunde, die aufgrund des Übergangs von Standardzeit zu Sommerzeit entfernt wird. Daher wird eine nonexistent_local_time Ausnahme ausgelöst.

Beispiel: 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

Mitglieder

Name Beschreibung
Konstruktoren Erstellen Sie ein nonexistent_local_time.
what Ruft eine Zeichenfolge ab, die die nicht vorhandene Zeit beschreibt.

Anforderungen

Header: <chrono> (seit C++20)

Namespace:std::chrono

Compileroption: /std:c++latest

Konstruktor

Erstellt ein Objekt vom Typ nonexistent_local_time.

template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);

Parameter

tp
Die local_time, bei der die Konvertierung fehlgeschlagen ist.

i
Informationen zur versuchten Konvertierung. Einzelheiten dazu finden Sie unter local_info.

Hinweise

Normalerweise erstellen Sie diese Ausnahme nicht. Es wird von Funktionen ausgelöst, die eine local_time in ein sys_time.

what

Ruft eine Zeichenfolge ab, die beschreibt, warum die Zeit nicht vorhanden ist.

[[nodiscard]] virtual const char* what() const noexcept;

Rückgabewert

Eine Zeichenfolge, die beschreibt, warum die Zeit nicht vorhanden ist. Zum Beispiel:

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

Siehe auch

<chrono>
to_sys
ambiguous_local_time
Headerdateienreferenz