Historische Datumszeichenfolgen in C 11-Datumsdarstellungen analysieren
Diese Frage untersucht die Möglichkeiten des Parsens historischer Datumszeichenfolgen mit std::chrono von C 11 Namensraum. Ziel ist die Berechnung der seit einem bestimmten Datum verstrichenen Zeit mit spezifischen Anforderungen für den Datenzugriff in Sekunden, Minuten, Stunden und Tagen.
std::chrono Approach
Wie gefragt, bietet std::chrono eine mögliche Lösung für diese Aufgabe. Hier ist eine Aufschlüsselung anhand des bereitgestellten Datumszeichenfolgenformats:
std::tm tm = {}; std::stringstream ss("Jan 9 2014 12:35:34"); ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S"); auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Dieser Code initialisiert eine std::tm-Struktur (tm), analysiert die Datumszeichenfolge mit std::get_time (verfügbar ab GCC 5 und höher), und wandelt die geparsten Daten in einen std::chrono::time_point (tp) um.
Alternative für Vor GCC 5
Vor GCC 5 ist std::get_time nicht verfügbar. In diesem Fall gibt es eine Alternative:
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm); auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
strptime() führt die Analyse durch und der Prozess folgt dann den gleichen Schritten wie bei std::get_time.
Zeit extrahieren Dauerkomponenten
Sobald der tp ermittelt wurde, kann der Code die Zeitdifferenz berechnen und die verschiedenen extrahieren Komponenten:
auto elapsed = std::chrono::duration_cast<std::chrono::seconds>( std::chrono::system_clock::now() - tp ); uint64_t days = elapsed.count() / 60 / 60 / 24; uint64_t hours = (elapsed.count() / 60 / 60) % 24; uint64_t minutes = (elapsed.count() / 60) % 60; uint64_t seconds = elapsed.count() % 60;
Diese Werte stellen das Zeitintervall seit dem angegebenen Datum in Tagen, Stunden, Minuten und Sekunden dar.
Das obige ist der detaillierte Inhalt vonWie kann ich historische Datumszeichenfolgen analysieren und die verstrichene Zeit mit „std::chrono' von C 11 berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!