Convirtiendo una fecha en una cadena de texto

C++:
Convirtiendo una fecha en una cadena de texto

Cómo hacerlo:

Podemos usar la biblioteca <chrono> de C++ y la clase std::ostringstream junto con <iomanip> para formatear fechas.

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

int main() {
    // Obtener la fecha actual como un objeto time_point
    auto now = std::chrono::system_clock::now();
    
    // Convertir a tiempo de sistema y luego a tm para formatear
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);
    std::tm now_tm = *std::localtime(&now_c);
    
    // Usar stringstream para formatear la fecha
    std::ostringstream date_stream;
    date_stream << std::put_time(&now_tm, "%d-%m-%Y %H:%M:%S");
    
    // Convertir a string
    std::string date_str = date_stream.str();
    
    // Mostrar la fecha formateada
    std::cout << "Fecha actual: " << date_str << std::endl;
    return 0;
}

Salida de muestra:

Fecha actual: 24-03-2023 14:45:12

Profundización:

En la era pre-C++11, las fechas eran manipuladas con las funciones y estructuras de C como time_t y tm. Con el estándar C++11, llegó <chrono> para manejar tiempo con mayor precisión y simplicidad. Sin embargo, la conversión a string seguía dependiendo de <ctime> hasta que C++20 introdujo std::format, que simplifica la tarea pero aún no es soportado universalmente.

Alternativas como la biblioteca Boost.Date_Time tienen más funcionalidades pero aumentan la complejidad y el tamaño del proyecto. Finalmente, la zona horaria y la localización impactan cómo se formatea una fecha, teniendo que elegir entre UTC, tiempo local y considerar el idioma del usuario final.

Ver También: