Compartir vía


choose enum

Se usa con time_zone y para indicar cómo controlar una conversión ambigua o inexistente zoned_timelocal_time.sys_time

Sintaxis

enum class choose { // C++20
    earliest,
    latest
};

Miembros

Elemento Descripción
earliest Si una conversión de tiempo es ambigua, usa el punto de tiempo anterior.
latest Si una conversión de tiempo es ambigua, usa el punto de tiempo posterior.

Comentarios

Si el resultado de la conversión es nonexistent_local_time, el tiempo en earliest y latest son los mismos.

Error de conversión ambiguo

Durante la transición del horario de verano a la hora estándar en el otoño, los relojes básicamente obtienen una hora adicional. Esto puede resultar confuso porque la transición al tiempo estándar significa perder una hora. Al retroceder una hora, la hora anterior a la transición se repetirá después de que el reloj se ajuste para la hora estándar. Considere el cambio a la hora estándar en Nueva York, que ocurre el primer domingo de noviembre a las 2:00. En primer lugar, pasa la 1:00. A las 2:00, el reloj pasa a la hora estándar, por lo que ahora es la 1:00 de nuevo. Esto significa que el tiempo comprendido entre la 1:00 y las 2:00 se "repetirá", agregando eficazmente una hora.

Si un local_time especifica una hora durante esta hora "adicional", no está claro cómo convertirla. ¿Debe tratarse el tiempo convertido como la "primera" vez que se produce esa hora o la "segunda"? Si no se especifica la enumeración choose para indicar cuál debe ser, obtendrá una excepción de ambiguous_local_time.

Error de conversión inexistente

Al convertir de horario estándar al horario de verano, puede surgir un problema diferente. Durante la transición de la hora estándar al horario de verano en la primavera, los relojes avanzan por una hora. La hora omitida desaparece, por lo que aunque parezca que hemos agregado una hora a la hora, al "reenviar" una hora, se quita la hora siguiente a la transición.

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", lo que da como resultado una excepción nonexistent_local_time.

Requisitos

Encabezado: <chrono> (desde C++20)

Espacio de nombres: std::chrono

Opción del compilador: /std:c++latest no es necesaria.

Consulte también

to_sys
zoned_time constructor