C++:
Datum in einen String umwandeln
So geht’s:
#include <iostream>
#include <iomanip>
#include <sstream>
#include <ctime>
int main() {
// Aktuelles Datum und Uhrzeit erhalten
std::time_t t = std::time(nullptr);
std::tm *tm_ptr = std::localtime(&t);
// Mit stringstream in String konvertieren
std::stringstream ss;
ss << std::put_time(tm_ptr, "%d.%m.%Y");
// String ausgeben
std::string date_as_string = ss.str();
std::cout << "Heutiges Datum: " << date_as_string << std::endl;
// Alternative mit C++20
// std::format wird in zukünftigen Versionen verfügbar
// std::string date_formatted = std::format("{:%d.%m.%Y}", *tm_ptr);
// std::cout << "Heutiges Datum: " << date_formatted << std::endl;
return 0;
}
Ausgabebeispiel:
Heutiges Datum: 01.04.2023
Deep Dive
Die Konversion von Datum zu String ist nicht neu und hat sich mit der Zeit entwickelt. Ursprünglich nutzte man strftime()
, eine Funktion aus der C Standardbibliothek. Mit C++ wurde das std::put_time
und der stringstream
eingeführt, die eine Objekt-orientiertere Herangehensweise bieten. In C++20 kam std::format
, eine sicherere und flexiblere Alternative, die momentan aber noch nicht breit unterstützt ist.
Man muss auch Zeitzonen beachten. std::localtime
berücksichtigt die lokale Zeitzone, während std::gmtime
die GMT/UTC Zeit liefert.
Alternativen sind Bibliotheken wie boost::date_time
oder fmt
für ältere C++ Versionen sowie std::chrono
aus C++11 und später für hochpräzise Zeitmessungen.