Utilerías de fecha y hora
C++ incluye apoyo para dos tipos de manipulación del tiempo:
- La biblioteca
chrono
, una colección flexible de tipos que mantienen la noción del tiempo con distintos grados de precisión (p. ej., std::chrono::time_point). - La biblioteca de fecha y hora estilo C (p. ej., std::time).
Contenido |
[editar] Biblioteca std::chrono
La biblioteca chrono
define tres tipos principales, así como varias funciones de utilería y definiciones de tipo (typedefs) comunes.
- relojes
- puntos de tiempo
- duraciones
[editar] Relojes
Un reloj consiste de un punto de inicio (o época) y una frecuencia de tics. Por ejemplo, un reloj puede tener una época 1 de enero de 1970, y marcar cada segundo. C++ define varios tipos de relojes:
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++11) |
Tiempo de pared a partir del reloj de tiempo real a lo largo del sistema. (clase) |
(C++11) |
Reloj monotónico que nunca será ajustado. (clase) |
(C++11) |
El reloj con mayor precisión disponible en el sistema. (clase) |
(C++20) |
Determina si un tipo es un Clock (plantilla de clase) (plantilla de variables) |
(C++20) |
Clock para el Tiempo Universal Coordinado (TUC) (clase) |
(C++20) |
Clock para el Tiempo Atómico Internacional (TAI) (clase) |
(C++20) |
Clock para tiempo GPS (clase) |
(C++20) |
Clock usado para el tiempo de archivo (typedef) |
(C++20) |
Pseudoreloj que representa la hora local. (clase) |
[editar] Punto de tiempo
Un punto de tiempo es una duración de tiempo que ha transcurrido desde la época de un reloj específico.
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++11) |
Un punto de tiempo. (plantilla de clase) |
(C++20) |
Clase de rasgos que define cómo convertir puntos de tiempo de un reloj a otro (plantilla de clase) |
(C++20) |
Convierte puntos de tiempo de un reloj a otro (plantilla de función) |
[editar] Duración
Una duración consiste en un lapso de tiempo, definido como un número de tics de alguna unidad de tiempo. Por ejemplo, "42 segundos" podría representarse por una duración que consta de 42 tics de una unidad de tiempo de 1 segundo.
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++11) |
Un intervalo de tiempo. (plantilla de clase) |
[editar] Hora del día
time_of_day
divide una duración que representa el tiempo transcurrido desde la medianoche en horas, minutos, segundos y fracciones de segundo, según corresponda. Es principalmente una herramienta de formato.
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++20) |
Representa una hora del día. (plantilla de clase) |
(C++20) |
Traduce entre un formato de hora del día de 12h/24h (función) |
[editar] Calendario
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++20) |
Clase etiqueta que indica el último día o día de la semana de un mes (clase) |
(C++20) |
Representa un día de un mes (clase) |
(C++20) |
Representa un mes de un año (clase) |
(C++20) |
Representa un año en el calendario gregoriano (clase) |
(C++20) |
Representa un día de la semana en el calendario gregoriano (clase) |
(C++20) |
Representa el enésimo día de la semana de un mes (clase) |
(C++20) |
representa el último día de la semana de un mes (clase) |
(C++20) |
Representa un día específico de un mes específico (clase) |
(C++20) |
Representa el último día de un mes específico (clase) |
(C++20) |
Representa el enésimo día de la semana de un mes específico (clase) |
(C++20) |
Representa el último día de la semana de un mes específico (clase) |
(C++20) |
Representa un mes específico de un año específico (clase) |
(C++20) |
Representa un año, mes y día específicos (clase) |
(C++20) |
Representa el último día de un año y mes específicos (clase) |
(C++20) |
Representa el enésimo día de la semana de un año y mes específicos (clase) |
(C++20) |
Representa el último día de la semana de un año y mes específicos (clase) |
(C++20) |
Sintaxis convencional para la creación de fechas calendario gregorianas (función) |
[editar] Zona horaria
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++20) |
Describe una copia de la base de datos de zonas horarias de IANA. (clase) |
(C++20) |
Representa una lista enlazada de bases de datos de zonas horarias. (clase) |
Accede a, y controla la información de la base de datos de zonas horarias global. (función) | |
(C++20) |
Localiza una zona horaria basado en su nombre. (función) |
(C++20) |
Devuelve la zona horaria actual. (función) |
(C++20) |
Representa una zona horaria. (clase) |
(C++20) |
Representa información acerca de una zona horaria en un punto en el tiempo particular. (clase) |
(C++20) |
Representa información acerca la conversión de la hora local a la hora de UNIX (clase) |
(C++20) |
Selecciona cómo debería resolverse una hora local ambigua. (enum) |
(C++20) |
Clase de rasgos para punteros a zonas horarias usadas por zoned_time. (plantilla de clase) |
(C++20) |
Representa una zona horaria y un punto en el tiempo. (clase) |
(C++20) |
Contiene información sobre la inserción de un segundo intercalar (o segundo bisiesto). (clase) |
(C++20) |
Información de inserción del segundo intercalar. (clase) |
(C++20) |
Obtiene información de inserción del segundo intercalar de un objeto utc_time . (plantilla de función) |
(C++20) |
Representa una nombre alterno para una zona horaria. (clase) |
(C++20) |
Excepción lanzada para reportar que una hora local no existe. (clase) |
(C++20) |
Excepción lanzada para informar que una hora local es ambigua. (clase) |
[editar] E/S de chrono
Definido en el archivo de encabezado
<chrono> | |
Definido en el espacio de nombres
std::chrono | |
(C++20) |
Analiza un objeto chrono a partir de un flujo (plantilla de función) |
[editar] Notas
Macro de Prueba de característica |
---|
__cpp_lib_chrono
|
std::chrono
)
[editar] Biblioteca de C de fecha y hora
También se proporcionan las funciones de fecha y hora estilo C, tales como std::time_t, std::difftime, y CLOCKS_PER_SEC.
[editar] Ejemplo
Este ejemplo muestra información acerca del tiempo de ejecución de una llamada a función:
#include <iostream> #include <chrono> long fibonacci(unsigned n) { if (n < 2) return n; return fibonacci(n-1) + fibonacci(n-2); } int main() { auto start = std::chrono::steady_clock::now(); std::cout << "f(42) = " << fibonacci(42) << '\n'; auto end = std::chrono::steady_clock::now(); std::chrono::duration<double> elapsed_seconds = end-start; std::cout << "tiempo transcurrido: " << elapsed_seconds.count() << "s\n"; }
Posible salida:
f(42) = 267914296 tiempo transcurrido: 1.88232s