Compartir vía


Estructura local_info

Proporciona una interfaz de bajo nivel a información de zona horaria sobre el resultado de convertir un local_time en un sys_time.

Sintaxis

struct local_info;

Miembros

Función Descripción
result Código que describe el resultado de la conversión.
first, second Resultado de la conversión.

Constantes de miembro

NOMBRE valor Descripción
unique 0 El resultado de la conversión es único.
nonexistent 1 No hay ningún elemento sys_time correspondiente para convertir en local_time.
ambiguous 2 El resultado de la conversión es ambiguo.

No miembros

Función Descripción
operator<< Genera un local_info a una secuencia.

result

El resultado de la conversión de local_time en sys_time.

int result;

Valor devuelto

El resultado puede tener uno de los siguientes valores:

  • unique: local_time se convirtió correctamente en sys_time.
  • nonexistent: no hay una asignación de local_time a sys_time.
  • ambiguous: el local_time acaba durante una transición entre el horario de verano y la hora estándar, por lo que se puede convertir en dos valores sys_time.

Comentarios

Para obtener información sobre cómo first y second se establecen en función de result, vea la sección siguiente sobre first, second.

first, second

Proporciona el resultado de la conversión de local_time en sys_time.

sys_seconds begin;
sys_seconds end;

Valor devuelto

first y second se establecen en result en función de lo siguiente:

result first second
unique Contiene el valor de local_time convertido en sys_time inicializado con cero
nonexistent Un sys_info que termina justo antes de local_time Un sys_info que empieza justo después de local_time.
ambiguous Un sys_info que termina justo después de local_time Un sys_info que empieza justo antes de local_time.

Código de resultado ambiguous

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. Vea ambiguous_local_time para obtener un ejemplo.

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, debe esperarse que result se establezca como ambiguous y first y second reflejarán las dos opciones para la hora a la que la local_time se podría convertir.

Código de resultado nonexistent

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 la local_time que se convierte es 2:30, por ejemplo, esa hora se produce durante el período que se "quitó" y, por lo tanto, puede esperar que result tenga el código nonexistent. Vea nonexistent_local_time para obtener un ejemplo.

Ejemplo: obtener un local_info

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    const auto& timeZoneDatabase = get_tzdb();
    const auto& currentZone = timeZoneDatabase.current_zone();

    local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());

    auto localInfo = currentZone->get_info(lt);

    std::cout << "local_time: " << lt << "\n";
    std::cout << localInfo << "\n";

    return 0;
}
local_time: 2021-09-08 15:37:57.6853963
result: unique, first: (begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT)

Requisitos

Encabezado: <chrono>

Espacio de nombres: std::chrono

Opción del compilador: /std:c++latest

<chrono>
Excepción ambiguous_local_time
Enumeración choose
Clase file_clock
high_resolution_clock
Estructura local_t
Excepción non_existent
Estructura system_clock
Clase tai_clock
Clase utc_clock
Referencia de archivos de encabezado