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 ensys_time
.nonexistent
: no hay una asignación delocal_time
asys_time
.ambiguous
: ellocal_time
acaba durante una transición entre el horario de verano y la hora estándar, por lo que se puede convertir en dos valoressys_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