<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 enQueryPerformanceCounter()
high_resolution_clock
ahora es una definición de tipo desteady_clock
. En la implementación de Microsoft C++,steady_clock::time_point
ahora es untypedef
dechrono::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;