Een datum converteren naar een string

C++:
Een datum converteren naar een string

Hoe:

In modern C++ zijn de bibliotheken <chrono> en <iomanip> je vrienden voor datum-tijd operaties. Hier is een snelle methode met std::put_time:

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

int main() {
    auto now = std::chrono::system_clock::now(); // Huidige tijd ophalen
    auto time = std::chrono::system_clock::to_time_t(now); // Omzetten naar time_t
    
    // Omzetten naar tm struct voor opmaak
    std::tm tm = *std::localtime(&time);

    // String stream voor uitvoer
    std::stringstream ss;

    ss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S"); // Formaat: JJJJ-MM-DD UU:MM:SS

    std::string date_str = ss.str(); // Omzetten naar een string

    std::cout << date_str << std::endl; // De datumstring uitvoeren
    return 0;
}

Voorbeelduitvoer (afhankelijk van de huidige datum en tijd):

2023-03-15 14:25:30

Diepgaande duik

Voordat <chrono> in beeld kwam, moesten C++ programmeurs vaak worstelen met C-stijl tijdbeheer via <ctime>. Dit was minder intuïtief en meer foutgevoelig vanwege handmatig geheugenbeheer en afhankelijkheden van het platform.

Alternatieven voor std::put_time omvatten het gebruik van strftime, maar dat is meer in C-stijl. Bibliotheken van derden zoals Boost.Date_Time kunnen meer functionaliteiten bieden ten koste van het toevoegen van afhankelijkheden.

Een belangrijk implementatiedetail is het begrijpen van de formaatspecificaties in std::put_time, die vergelijkbaar zijn met die gebruikt in strftime. Je brengt placeholders in kaart naar datum- of tijdscomponenten — %Y voor het volledige jaar, %m voor de maand, enzovoort.

Zie ook