Compartir vía


Clase utc_clock

Reloj para la hora universal coordinada (UTC) que a veces se conoce popularmente como hora media de Greenwich (GMT) o hora Zulú. La hora local se ajusta a partir de la hora UTC en función de la zona horaria.

Sintaxis

class utc_clock; // C++20

Comentarios

Este reloj mide la hora desde las 00:00:00 UTC del jueves 1 de enero de 1970. Este reloj cuenta segundos intercalares y es la base para el tiempo civil en todo el mundo.

La cadencia del UTC se basa en el tiempo atómico internacional (TAI) que usa relojes atómicos para realizar un seguimiento del tiempo. Sin embargo, un segundo intercalar se agrega ocasionalmente a la hora UTC para mantener la diferencia entre la hora UTC y UT1 (tiempo solar) en +- 0,9 segundos.

Hay una discrepancia entre el tiempo mantenido por los relojes atómicos y el tiempo mantenido mediante el seguimiento de la rotación de la tierra. Esto se debe a que la velocidad de rotación de la tierra es irregular y, en general, se ralentiza con el tiempo aproximadamente un segundo cada 1,5 años (aunque a veces la velocidad de rotación de la tierra aumenta). Un ajuste de un segundo intercalar mantiene el seguimiento del UTC dentro de un segundo de la duración media de un día.

En el momento de escribir esto se han agregado 27 segundos intercalares desde que comenzó esta práctica en 1972. El Servicio Internacional de Rotación de Tierra y Sistemas de Referencia (IERS) determina cuándo se agregará un segundo intercalar. Agregar un segundo intercalar se conoce como "inserción de segundo intercalar". Cuando se inserta un segundo intercalar, el tiempo, a medida que se aproxima a medianoche, pasa de 23 horas 59 minutos 59 segundos a 23 horas 59 minutos 60 segundos (el segundo intercalar insertado) y luego a 0 horas 0 minutos 0 segundos (medianoche). Históricamente se han agregado segundos intercalares el 30 de junio o el 31 de diciembre.

La hora UTC, por definición, comienza 10 segundos detrás de la hora TAI (tiempo atómico). En 1972 se agregaron 10 segundos a la hora TAI para dar cabida a los segundos intercalares que había acumulado en ese momento. Dada la inserción de otros 27 segundos intercalares desde entonces, la hora UTC va actualmente 37 segundos por detrás de la hora TAI (reloj atómico).

Miembros

Nombre Descripción
from_sys Estática. Convierte sys_time en utc_time.
now Estática. Devuelve la hora actual.
to_sys Estática. Convierte utc_time en sys_time.

No miembros

Nombre Descripción
from_stream Analiza un utc_time desde la secuencia especificada con el formato indicado.
get_leap_second_info Obtiene un leap_second_info que indica si el tiempo proporcionado especifica una hora en la que se insertó un segundo intercalar. También incluye la suma de todos los segundos intercalares entre el 1 de enero de 1970 y el momento especificado.
operator<< Genera un elemento utc_time en la secuencia especificada.

Alias de tipo de conveniencia

Nombre Descripción
utc_clock::duration En la implementación de Microsoft es un sinónimo de duration<system_clock::rep, system_clock::period>. Representa una duración de tiempo medida en unidades de 100 nanosegundos.
utc_clock::period La implementación de Microsoft define esto como un sinónimo de system_clock::period. Representa el tiempo en segundos (100 nanosegundos) entre cada tic de la duración.
utc_clock::rep Un sinónimo del tipo (long long) usado para representar las unidades integrales de este reloj utc_clock::duration.
utc_clock::time_point Sinónimo de time_point<utc_clock>. Se usa para representar un time_point para este reloj.

Relacionados

Nombre Descripción
utc_seconds Sinónimo de using utc_seconds = utc_time<seconds>;.
utc_time Un sinónimo de template<class Duration> using utc_time = time_point<utc_clock, Duration>;. Representa un time_point para un utc_clock. Especifique la duración. Definido en std::chrono

Constantes públicas

Nombre Descripción
[utc_clock::is_steady constant](#is_steady_constant) Indica si el tipo de reloj es constante. Su valor es false.

Requisitos

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

Espacio de nombres: std::chrono

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

from_sys

Método estático que convierte un sys_time en un utc_time.

template<class Duration>
static utc_time<common_type_t<Duration, seconds>>
from_sys(const sys_time<Duration>& t);

Parámetros

t
Objeto sys_time que se va a convertir.

Valor devuelto

Un utc_time valor establecido en el tiempo que más se aproxima a .sys_time t Si no existe una asignación directa, se devuelve el time_point durante una inserción de segundo intercalar y el último valor representable de sys_time antes de la inserción del segundo intercalar.

to_sys

Método estático que convierte un utc_time en un sys_time.

template<class Duration>
static sys_time<common_type_t<Duration, seconds>>
to_sys(const utc_time<Duration>& t);

Parámetros

t
Objeto utc_time que se va a convertir.

Valor devuelto

El sys_time establecido en el punto equivalente en el tiempo como t. Si no existe una asignación directa, es el último valor que se puede representar antes de la inserción de un segundo intercalar en caso de que t represente un punto en el tiempo en el que se insertó un segundo intercalar. Agregar un segundo intercalar se conoce como "inserción de segundo intercalar". Cuando se inserta un segundo intercalar, la hora a medida que se acerca a la medianoche continúa de 23 horas 59 minutos 59 segundos a 23 horas 59 minutos 60 segundos (el segundo intercalar) y luego a 0 horas 0 minutos 0 segundos (medianoche). En el pasado se han agregado segundos intercalares el 30 de junio o el 31 de diciembre.

is_steady

Valor estático que especifica si el tipo del reloj es constante. En la implementación de Microsoft, is_steady_constant es false. Dado que el utc_clock no es estable, no se puede usar de forma fiable este reloj para tomar el tiempo antes de un evento, el tiempo después de un evento y restarlos para obtener la duración del evento, porque el reloj podría ajustarse durante ese tiempo.

static const bool is_steady = false;

now

Método estático que devuelve la hora UTC actual. El tiempo devuelto incluye segundos intercalares.

static time_point now() noexcept;

Valor devuelto

Un objeto time_point que representa el tiempo actual. El punto de tiempo devuelto es efectivamente from_sys(system_clock::now()).

Consulte también

<chrono>
file_clock class
gps_clock class
high_resolution_clock
Estructura local_t
Estructura steady_clock
Estructura system_clock
Clase tai_clock
Referencia de archivos de encabezado