Clase nonexistent_local_time
Esta excepción se produce al intentar convertir un objeto local_time
en un objeto sys_time
que no existe.
Sintaxis
class nonexistent_local_time : public runtime_error; // C++20
Comentarios
Durante la transición del horario estándar al horario de verano en la primavera, los relojes pierden esencialmente una hora. Esto puede resultar confuso porque la transición al horario de verano significa agregar una hora. Al "saltar" una hora, la hora que sigue a la transición se pierde en esencia. Considere el cambio en el horario de verano en Nueva York, que sucede el segundo domingo de marzo a las 2:00. A las 2:00, el reloj pasa al horario de verano y ahora muestra las 3:00. Si el objeto local_time
que se convierte es de 2:30 a. m., por ejemplo, ese tiempo es durante el período que se "quitó" y así es "inexistente".
En el ejemplo siguiente se muestra un error de conversión de tiempo inexistente. En este ejemplo, el horario de verano en Nueva York comienza a las 2:00 a. m. La hora que se va a convertir es de 2:30 a. m. Esto se produce durante la hora que se quita debido a la transición de la hora estándar al horario de verano. Por lo tanto, se produce una excepción nonexistent_local_time
.
Ejemplo: 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
Miembros
Nombre | Descripción |
---|---|
Constructores | Construya un elemento nonexistent_local_time . |
what |
Obtiene una cadena que describe la hora inexistente. |
Requisitos
Encabezado: <chrono>
(desde C++20)
Espacio de nombres: std::chrono
Opción del compilador: /std:c++latest
Constructor
Construye un objeto nonexistent_local_time
.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
Parámetros
tp
El valor de local_time que produjo un error en la conversión.
i
Información sobre el intento de la conversión. Para obtener información detallada, vea local_info
.
Comentarios
Normalmente, no creará esta excepción. Se produce mediante funciones que convierten un local_time
en un sys_time
.
what
Obtiene una cadena que describe por qué el tiempo no existe.
[[nodiscard]] virtual const char* what() const noexcept;
Valor devuelto
Cadena que describe por qué el tiempo no existe. Por ejemplo:
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
Consulte también
<chrono>
to_sys
ambiguous_local_time
Referencia de archivos de encabezado