Conversione di una data in una stringa

C++:
Conversione di una data in una stringa

How to:

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

int main() {
    using namespace std::chrono;
    auto now = system_clock::now();
    time_t t_now = system_clock::to_time_t(now);
    tm utc_tm = *gmtime(&t_now);

    std::stringstream ss;
    ss << std::put_time(&utc_tm, "%Y-%m-%d %H:%M:%S"); // Formato ISO 8601
    std::string date_str = ss.str();

    std::cout << "Data corrente (UTC): " << date_str << std::endl;
    
    return 0;
}

Output: Data corrente (UTC): 2023-04-07 15:45:12

Deep Dive:

Storicamente, la gestione del tempo in C++ era abbastanza rudimentale. Solo con C++11 è stata introdotta la libreria <chrono>, che ha portato un’astrazione moderna al tempo e alla data. Prima si usavano le strutture time_t e tm di C, che sono ancora utili quando si convertono le date in stringhe, specie in combinazione con <iomanip> per formattare.

Un’alternativa moderna è usare la libreria fmt (ora inclusa nella standard library come <format> da C++20 in poi), che semplifica ulteriormente la formattazione delle date.

Dettagli importanti includono la gestione del fuso orario (UTC nel nostro esempio) e l’adozione di formati standard come ISO 8601 per l’interoperabilità.

See Also: