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.

Siehe Auch