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.