Compartir vía


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