Biblioteca estándar de C++<chrono>

C++11 introdujo<chrono>la biblioteca, que es una biblioteca para manejar tiempo y fechas. Proporciona un amplio conjunto de herramientas para medir intervalos de tiempo, realizar cálculos de puntos de tiempo y manejar fechas y horas.<chrono>La biblioteca es una parte central de la biblioteca estándar de C++ para el manejo de operaciones relacionadas con el tiempo.

Conceptos básicos

Puntos de tiempo (Time Points)

Un punto de tiempo representa un instante específico, generalmente asociado con un reloj en particular.

Duraciones (Durations)

La duración representa el intervalo de tiempo entre dos puntos de tiempo.

Relojes (Clocks)

El reloj es la fuente de los puntos de tiempo y las duraciones. C++ proporciona varios relojes diferentes, como el reloj del sistema, el reloj de alta resolución, etc.

Sintaxis básica

Incluir el archivo de encabezado

Antes de usar<chrono>la biblioteca, es necesario incluir el archivo de encabezado correspondiente:

#include <chrono>

Uso de puntos de tiempo

auto now = std::chrono::system_clock::now();

Uso de duraciones

auto duration = std::chrono::seconds(5);

Cálculo de puntos de tiempo

auto future_time = now + duration;

Ejemplo

Medición del tiempo de ejecución de funciones

A continuación se muestra<chrono>un ejemplo simple de uso de la biblioteca para medir el tiempo de ejecución de funciones:

Ejemplo

#include <iostream>
#include <chrono>

void someFunction() {
    // Simular algunas operaciones
    std::this_thread::sleep_for(std::chrono::seconds(1));
}

int main() {
    auto start = std::chrono::high_resolution_clock::now();

    someFunction();

    auto end = std::chrono::high_resolution_clock::now();

    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
    std::cout << "Function took " << duration.count() << " milliseconds to execute." << std::endl;

    return 0;
}

Salida:

Function took 1000 milliseconds to execute.

Manejo de fecha y hora

<chrono>La biblioteca también se puede usar para manejar fechas y horas. A continuación se muestrastd::chrono::system_clockystd::chrono::time_pointun ejemplo para obtener la fecha y hora actuales:

Ejemplo

#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    auto now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);

    std::cout << "Current date and time: " << std::ctime(&now_c);

    return 0;
}

Salida:

Current date and time: Fri Mar 11 12:34:56 2022

Uso avanzado

Uso de diferentes relojes

C++ proporciona varios relojes, por ejemplo:

  • std::chrono::system_clock: reloj del sistema, normalmente sincronizado con la hora del sistema.
  • std::chrono::steady_clock: reloj monótono, que no se ve afectado por los cambios en la hora del sistema.
  • std::chrono::high_resolution_clock: proporciona el reloj de mayor resolución.

Formato de fecha y hora

Se puede usar<iomanip>y<ctime>para formatear la fecha y la hora:

Ejemplo

#include <iostream>
#include <iomanip>
#include <chrono>
#include <ctime>

int main() {
    auto now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);

    std::cout << std::put_time(std::localtime(&now_c), "%Y-%m-%d %H:%M:%S");

    return 0;
}

Salida:

2022-03-11 12:34:56
Otras extensiones