Heim >Backend-Entwicklung >C++ >Wie kann ich Datumszeichenfolgen analysieren und die verstrichene Zeit mit std::chrono von C 11 berechnen?

Wie kann ich Datumszeichenfolgen analysieren und die verstrichene Zeit mit std::chrono von C 11 berechnen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 22:29:10547Durchsuche

How Can I Parse Date Strings and Calculate Elapsed Time Using C  11's std::chrono?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn