Heim >Backend-Entwicklung >C++ >Wie kann ich Datumszeichenfolgen analysieren und die verstrichene Zeit mit std::chrono von C 11 berechnen?
Datumszeichenfolgen mit C 11 std::chrono analysieren
Beim Arbeiten mit Datums- und Uhrzeitinformationen ist es häufig erforderlich, eine Datumszeichenfolge zu analysieren in eine geeignete Datendarstellung umwandeln. Für C 11 bietet der std::chrono-Namespace leistungsstarke Tools zum Umgang mit Zeitdauern und Zeitpunkten.
Datumszeichenfolgen analysieren
So analysieren Sie eine Datumszeichenfolge in std: :chrono, GCC stellt die Funktion std::get_time bereit. Bei einem std::tm-Objekt und einer Formatzeichenfolge kann std::get_time die Datums- und Uhrzeitkomponenten aus der Eingabezeichenfolge extrahieren. Das folgende Code-Snippet demonstriert dies:
std::tm tm = {}; std::stringstream ss("Jan 9 2014 12:35:34"); ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
GCC-Versionen vor 5 implementieren std::get_time nicht. Alternativ können Sie strptime verwenden:
std::tm tm = {}; strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
Berechnung der verstrichenen Zeit
Sobald Sie das analysierte Datum und die analysierte Uhrzeit in einem std::tm-Objekt haben, können Sie kann es mit in einen time_point umwandeln std::chrono::system_clock::from_time_t:
auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Dieser time_point stellt das analysierte Datum und die analysierte Uhrzeit in der aktuellen Zeitzone dar. Um die seit dem analysierten Datum verstrichene Zeit zu berechnen, subtrahieren Sie den aktuellen time_point vom analysierten time_point:
auto now = std::chrono::system_clock::now(); auto elapsed = now - tp;
Zugriff auf Zeitkomponenten
Der std::chrono:: Das Dauerobjekt bietet Zugriff auf die verstrichenen Zeitkomponenten. Um die Anzahl der Sekunden, Minuten, Stunden und Tage abzurufen, verwenden Sie die folgenden Funktionen:
auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed).count(); auto minutes = std::chrono::duration_cast<std::chrono::minutes>(elapsed).count(); auto hours = std::chrono::duration_cast<std::chrono::hours>(elapsed).count(); auto days = std::chrono::duration_cast<std::chrono::days>(elapsed).count();
Durch die Verwendung dieser Techniken können Sie Datumszeichenfolgen effektiv in std::chrono-Zeitpunkte analysieren und die verstrichenen berechnen Zeit seit dem analysierten Datum und ermöglicht so den Zugriff auf die gewünschten Zeitkomponenten auf bequeme und effiziente Weise.
Das obige ist der detaillierte Inhalt vonWie kann ich 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!