nonexistent_local_time
-Klasse
Diese Ausnahme wird ausgelöst, wenn versucht wird, eine local_time
in ein nicht vorhandenes sys_time
zu 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