Klasa nonexistent_local_time
Ten wyjątek jest zgłaszany podczas próby przekonwertowania klasy local_time
na nieistniejącą sys_time
.
Składnia
class nonexistent_local_time : public runtime_error; // C++20
Uwagi
W okresie przejściowym od czasu standardowego do czasu letniego wiosną zegary zasadniczo tracą godzinę. Może to być mylące, ponieważ nie przejście do czasu letniego oznacza dodanie godziny? Przez "wiosnę do przodu" godzinę, godzina po przejściu zostanie skutecznie usunięta. Rozważ zmianę czasu letniego w Nowym Jorku, która ma miejsce w drugą niedzielę w marcu o 2 rano. O godzinie 2:00 zegar przechodzi do czasu letniego, a teraz odczytuje 3:00. local_time
Jeśli przekonwertowana wartość to 2:30, na przykład czas ten występuje w okresie", który został "usunięty", a więc jest "nieistniejący".
W poniższym przykładzie pokazano błąd konwersji czasu nieistniejących. W tym przykładzie czas letni w Nowym Jorku rozpoczyna się o godzinie 2:00. Czas konwersji wynosi 2:30. To w ciągu godziny, która jest usuwana z powodu przejścia z czasu standardowego do czasu letniego. Dlatego zgłaszany nonexistent_local_time
jest wyjątek.
Przykład: 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
Elementy członkowskie
Nazwa/nazwisko | opis |
---|---|
Konstruktory | Skonstruuj element nonexistent_local_time . |
what |
Pobiera ciąg opisujący nieistniejący czas. |
Wymagania
Nagłówek: <chrono>
(od C++20)
Przestrzeń nazw: std::chrono
Opcja kompilatora: /std:c++latest
Konstruktor
Tworzy element nonexistent_local_time
.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
Parametry
tp
Konwersja local_time, która nie powiodła się.
i
Informacje o próbie konwersji. Zobacz local_info
, aby uzyskać szczegółowe informacje.
Uwagi
Zazwyczaj nie można utworzyć tego wyjątku. Jest on zgłaszany przez funkcje, które konwertują local_time
sys_time
element na .
what
Pobiera ciąg opisujący, dlaczego czas nie istnieje.
[[nodiscard]] virtual const char* what() const noexcept;
Wartość zwracana
Ciąg opisujący, dlaczego czas nie istnieje. Na przykład:
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
Zobacz też
<chrono>
to_sys
ambiguous_local_time
Odwołanie do plików nagłówka