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