Compartir a través de


<chrono>

Incluya el encabezado estándar <chrono> para definir las clases y funciones que representan y manipulan las duraciones de tiempo e instantes de tiempo.

Desde Visual Studio 2015, la implementación de steady_clock ha cambiado para cumplir los requisitos del estándar de C++ en cuanto a estabilidad y monotonía:

  • steady_clock ahora se basa en QueryPerformanceCounter()
  • high_resolution_clock ahora es una definición de tipo de steady_clock. En la implementación de Microsoft C++, steady_clock::time_point ahora es un typedef de chrono::time_point<steady_clock>. Sin embargo, esto no es necesariamente el caso de otras implementaciones.

Requisitos

Encabezado: <chrono>

En ocasiones, los legisladores regionales realizan cambios en las zonas horarias, y un organismo internacional de estándares especifica cuándo se deben tener en cuenta nuevos segundos intercalares. Se agregó una base de datos de estos cambios a Windows 10. Específicamente:

Característica Versión del cliente Versión del servidor
Actualizaciones de la base de datos de segundos intercalares Windows 10, versión 1809 o posterior Windows Server 2019 o posterior
Compatibilidad con zonas horarias Windows 10, versión 1903/19H1 o posterior Windows Server 2022 o posterior

El uso de las instalaciones de zona horaria en versiones anteriores de Windows produce un error en tiempo de ejecución.

Espacio de nombres: std

Tipos calendáricos

Nombre Descripción
Estructura common_type Describe especializaciones de la plantilla de clase common_type para las creaciones de instancias de duration y time_point.
Clase day Día del mes. Por ejemplo, el día 25 del mes.
Clase duration Intervalo de tiempo.
Estructura duration_values Proporciona valores concretos para el parámetro Rep de plantilla duration.
Clase hh_mm_ss Divide duration en horas:minutos:segundos.
last_spec Se usa para indicar el último elemento de un mes, como el último día de la semana de un mes (el último martes de febrero de 2020) o el último día de un mes (el último día de abril de 2019).
Clase leap_second Fecha y valor de un segundo intercalar insertado.
Estructura leap_second_info Datos devueltos por get_leap_second_info.
Clase month Mes de un año. Por ejemplo, julio.
Clase month_day Día específico de un mes específico. Por ejemplo, 30 de julio.
Clase month_day_last Último día del mes.
Clase month_weekday Día de la semana (en número) de un mes específico.
Clase month_weekday_last Día de la semana (en número) de un mes específico.
Clase time_point A un momento dado.
Clase weekday Día de la semana.
Clase weekday_last Último día laborable de un mes.
Clase weekday_indexed Combina un día de la semana con un índice que representa el día de la semana del mes.
Clase year Fecha en el calendario gregoriano.
Clase year_month Año y mes. No se especifica el día.
Clase year_month_day Año, mes y día.
Clase year_month_day_last Último día de un mes y año específicos.
Clase year_month_weekday Año, mes y día de la semana (en número) específicos del mes.
Clase year_month_weekday_last Año, mes y último día de la semana específicos del mes.

Relojes

Nombre Descripción
Clase file_clock Alias del reloj usado para std::filesystem::file_time_type, que se usa para expresar marcas de tiempo de archivo.
Clase gps_clock Reloj que mantiene el tiempo de GPS. Mide la hora a partir del primer domingo de enero de 1980 a las 00:00:00 UTC.
Estructura high_resolution_clock Reloj con un período de graduación nanosegundos.
Estructura local_t Pseudoproceso que se usa como argumento para la plantilla time_point para indicar que time_point representa la hora local.
Estructura steady_clock Reloj steady. Este reloj se prefiere para medir los intervalos de tiempo.
Estructura system_clock Reloj basado en el reloj en tiempo real del sistema.
Clase tai_clock Mide la hora atómica internacional (TAI) a partir del jueves 1 de enero de 1958 a las 00:00:00. Este reloj no tiene en cuenta los segundos intercalares.
Clase utc_clock Este reloj mide la hora desde las 00:00:00 UTC del jueves 1 de enero de 1970. Este reloj tiene en cuenta los segundos intercalares, y es el tiempo estándar utilizado en todo el mundo.

Zonas horarias

Nombre Descripción
choose Enumeración que especifica cómo resolver la conversión ambigua de local_time a sys_time.
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.
sys_info Proporciona una interfaz de bajo nivel a información de zona horaria sobre el resultado de convertir un sys_time en un local_time.
Clase time_zone Todas las transiciones de zonas horarias para un área geográfica específica.
Clase time_zone_link Nombre alternativo de time_zone.
Estructura tzdb Representa una copia de la base de datos de zona horaria.
Clase tzdb_list Lista única de bases de datos de zonas horarias.
Clase zoned_time Emparejamiento de time_zone y time_point con una precisión especificada.
Estructura zoned_traits Se usa para asociar una zona horaria predeterminada diferente a zoned_time, y, opcionalmente, asignar un nombre personalizado a esa zona horaria predeterminada.

Excepciones

Nombre Descripción
ambiguous_local_time Error producido cuando local_time se convierte en sys_time y el resultado es ambiguo.
nonexistent_local_time Error producido cuando local_time se convierte en sys_time y el resultado es una hora que no existe.

Funciones

Nombre Descripción
ceil(duration) Devuelve el ceil de un objeto duration como un tipo especificado.
ceil(time_point) Devuelve el ceil de un objeto time_point como un tipo especificado.
clock_cast Convierte time_point de un reloj en un equivalente time_point para otro reloj.
duration_cast Convierte un objeto duration a un tipo especificado.
floor(duration) Devuelve el floor de un objeto duration como un tipo especificado.
floor(time_point) Devuelve el floor de un objeto time_point como un tipo especificado.
from_stream() Analice el flujo de entrada en uno de los tipos de intervalo o hora std::chrono, como day, month, weekday y year con el formato especificado.
get_leap_second_info Obtiene una estructura leap_second_info .
is_am Si un objeto hours es AM.
is_pm Si un objeto hours es PM.
locate_zone Obtiene la zona horaria especificada.
make12 Devuelve un hours en formato de 12 horas.
make24 Devuelve un hours en formato de 12 horas.
round(duration) Devuelve un objeto duration redondeado como un tipo especificado.
round(time_point) Devuelve un objeto time_point redondeado como un tipo especificado.
time_point_cast Convierte un objeto time_point a un tipo especificado.

Zona horaria relacionada

Nombre Descripción
current_zone Obtiene la zona horaria actual.
get_tzdb Obtiene la primera entrada de la base de datos de la zona horaria.
get_tzdb_list Obtiene una lista de entradas de la base de datos de la zona horaria.
reload_tzdb Obtiene una entrada actualizada de la base de datos de la zona horaria.
remote_version Comprueba si hay una entrada actualizada de la base de datos de la zona horaria.

Operadores

Nombre Descripción
operator- Resta o niega varios objetos <chrono>.
operator!= Operador de desigualdad que se utiliza con varios objetos <chrono>.
operator modulo Operador para operaciones de módulo en objetos duration.
operator* Operador de multiplicación para objetos duration.
operator/ Operador de división para objetos duration.
operator/ Proporciona sintaxis para crear fechas de calendario.
operator+ Agregue a varios objetos <chrono>.
operator< Determina si varios objetos <chrono> son menores que otros.
operator<= Determina si varios objetos <chrono> son menores o iguales que otros.
operator== Determina si varios objetos <chrono> son iguales entre sí.
operator> Determina si varios objetos <chrono> son mayores que otros.
operator>= Determina si varios objetos <chrono> son mayores que otros o iguales entre sí.

Typedefs

Para obtener más información sobre los tipos de relación que se usan en los siguientes typedefs, vea <ratio>.

Tipos de conveniencia duration

Nombre Descripción
typedef duration<long long, nano> nanoseconds; Sinónimo de un tipo duration que tiene un período de ciclo de un milmillonésimo (1/1 000 000 000) de segundo.
typedef duration<long long, micro> microseconds; Sinónimo de un tipo duration que tiene un período de ciclo de un millonésimo (1/1 000 000) de segundo.
typedef duration<long long, milli> milliseconds; Sinónimo de un tipo duration que tiene un período de ciclo de una milésima (1/1000) de segundo.
typedef duration<long long> seconds; Sinónimo de un tipo duration que tiene un período de ciclo de 1 segundo.
typedef duration<int, ratio<60>> minutes; Sinónimo de un tipo duration que tiene un período de ciclo de 1 minuto.
typedef duration<int, ratio<3600>> hours; Sinónimo de un tipo duration que tiene un período de ciclo de 1 hora.

Tipos de conveniencia time_point

Nombre Descripción
file_time Sinónimo de time_point<file_clock, Duration>. Representa un time_point para un file_clock. Especifique el Duration, por ejemplo, file_time<seconds> ft;.
gps_seconds Un sinónimo de gps_time<seconds>; Un recuento de segundos, representado por un time_point que está asociado con un gps_clock.
gps_time Sinónimo de time_point<gps_clock, Duration>. Representa un time_point para un gps_clock. Especifique el Duration, por ejemplo, gps_time<milliseconds> gps;.
local_days Sinónimo de local_time<days>. Recuento de días, representado por un time_point que está asociado a cualquier zona horaria.
local_seconds Sinónimo de local_time<seconds>.
local_time Sinónimo de time_point<local_t, Duration>. Representa un time_point para una hora local que aún no está asociada a una zona horaria. Especifique el Duration, por ejemplo, local_time<seconds> lt;. Una local_time es una hora local en algún lugar. No es la hora local actual del reloj del equipo. Solo cuando se empareja un local_time con time_zone, se obtiene un punto en el tiempo que se puede convertir a la hora UTC o la hora en una zona horaria específica.
sys_days Sinónimo de sys_time<days>. Recuento de días desde la época del system_clock, representado por un time_point que está asociado a system_clock.
sys_seconds Sinónimo de sys_time<seconds>. Recuento de segundos no intercalares desde la época de system_clock (1 de enero de 1970 a las 00:00:00 UTC), representado por un time_point que está asociado a system_clock.
sys_time Sinónimo de time_point<system_clock, Duration>. Especifique el Duration, por ejemplo, sys_time<seconds> st;. Representa un time_point devuelto de system_clock::now(). Representa la hora Unix, que se aproxima estrechamente a la hora UTC.
tai_seconds Sinónimo de tai_time<seconds>. Recuento de segundos, representado por un time_point que está asociado a tai_clock.
tai_time Sinónimo de time_point<tai_clock, Duration>. Proporcione el Duration, por ejemplo, tai_time<seconds> tt;. Representa un time_point para un tai_clock.
utc_seconds Sinónimo de utc_time<seconds>;.
utc_time Sinónimo de time_point<utc_clock, Duration>. Proporcione el Duration, por ejemplo, utc_time<seconds> ut;. Representa un time_point para un utc_clock.

Rasgos de tipos

Nombre Descripción
clock_time_conversion Rasgo que especifica cómo convertir time_point de un reloj a otro.
is_clock Comprueba si un tipo es un reloj.
treat_as_floating_point Comprueba si duration puede convertirse en otro duration que tenga un período de paso diferente.

Literales

(C++11) El encabezado <chrono> define los siguientes literales definidos por el usuario que puede usar para mayor comodidad, seguridad de tipos y mantenimiento del código. Estos literales se definen en el espacio de nombres alineado literals::chrono_literals y están en ámbito cuando std::chrono está en ámbito.

Declaración Descripción
hours operator "" h(unsigned long long Val) Especifica horas como un valor entero.
duration<double, ratio<3600>> operator "" h(long double Val) Especifica horas como un valor de coma flotante.
minutes (operator "" min)(unsigned long long Val) Especifica minutos como un valor entero.
duration<double, ratio<60>> (operator "" min)( long double Val) Especifica minutos como un valor de coma flotante.
seconds operator "" s(unsigned long long Val) Especifica minutos como un valor entero.
duration<double> operator "" s(long double Val) Especifica segundos como un valor de coma flotante.
milliseconds operator "" ms(unsigned long long Val) Especifica milisegundos como un valor entero.
duration<double, milli> operator "" ms(long double Val) Especifica milisegundos como un valor de coma flotante.
microseconds operator "" us(unsigned long long Val) Especifica microsegundos como un valor entero.
duration<double, micro> operator "" us(long double Val) Especifica microsegundos como un valor de coma flotante.
nanoseconds operator "" ns(unsigned long long Val) Especifica nanosegundos como un valor entero.
duration<double, nano> operator "" ns(long double Val) Especifica nanosegundos como un valor de coma flotante.

En los siguientes ejemplos se muestra cómo usar los literales <chrono>:

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

Consulte también

Referencia de archivos de encabezado