Wie man einen Dateinamen basierend auf aktuellem Datum & Uhrzeit in C++ mit chrono generiert
Problem:
Sie möchten einen Dateinamen generieren, z.B. für Datalogging, der das aktuelle Datum und die Uhrzeit in C++ enthält - zum Beispiel:
2023-04-22_19-38-34.csvLösung
Um einen Dateinamen mit dem aktuellen Datum und der Uhrzeit in C++ zu generieren, können Sie die chrono-Bibliothek verwenden, um die aktuelle Zeit zu erhalten und als String zu formatieren. Hier ist ein Code-Snippet, das zeigt, wie man dies macht:
#include <chrono>
#include <iomanip>
#include <sstream>
std::string GetFilenameByCurrentDate(const char* extension=".bin") {
// Get the current time
auto now = std::chrono::system_clock::now();
// Convert to local time
auto localTime = std::chrono::system_clock::to_time_t(now);
// Format the timestamp as a string
std::stringstream ss;
ss << std::put_time(std::localtime(&localTime), "%F_%H-%M-%S") << extension;
return ss.str();
}Diese Funktion nimmt einen optionalen extension-Parameter, der die zu verwendende Dateierweiterung angibt (standardmäßig “.bin”). Sie verwendet die chrono-Bibliothek, um die aktuelle Zeit (now) zu erhalten, sie in lokale Zeit (localTime) umzuwandeln und als String (ss) zu formatieren. Die put_time-Funktion wird verwendet, um die Zeit als String im Format “%F_%H-%M-%S” zu formatieren, was das Datum und die Uhrzeit im ISO 8601-Format darstellt (z.B. 2023-04-23_19-13-22).
Dies wird einen Dateinamen wie 2023-04-23_19-13-22.bin erzeugen, der verwendet werden kann, um eine neue Datei zu erstellen oder Daten in einer vorhandenen Datei zu speichern. Durch die Einbindung eines Zeitstempels in den Dateinamen können Sie leicht nachverfolgen, wann die Datei erstellt wurde, und schnell Dateien identifizieren, die zu einem bestimmten Zeitpunkt erstellt wurden.