Heim > Backend-Entwicklung > C++ > Wie kann ich Datumszeichenfolgen analysieren und Zeitberechnungen mit std::chrono von C 11 durchführen?

Wie kann ich Datumszeichenfolgen analysieren und Zeitberechnungen mit std::chrono von C 11 durchführen?

Patricia Arquette
Freigeben: 2024-11-25 12:52:12
Original
838 Leute haben es durchsucht

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

Datumszeichenfolgen mit C 11 std::chrono analysieren

Beim Umgang mit historischen Datumszeichenfolgen ist es oft notwendig, sie in C-Datumszeichenfolgen zu analysieren Darstellungen für verschiedene Berechnungen. Der std::chrono-Namespace von C 11 bietet leistungsstarke Tools für die Zeitverwaltung.

Parsen einer Datumszeichenfolge

So analysieren Sie eine Datumszeichenfolge im Format „Do, 9. Jan. 12: 35:34 2014“ können wir std::stringstream und std::get_time nutzen Funktionen:

std::stringstream ss("Jan 9 2014 12:35:34");
std::tm tm = {};
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
Nach dem Login kopieren

Dies analysiert den String in eine std::tm-Struktur, die die einzelnen Zeitkomponenten enthält.

Konvertierung in einen std::chrono::time_point

Um einen std::chrono::time_point zu erhalten, der das analysierte Datum darstellt, verwenden wir std::chrono::system_clock::from_time_t:

auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Nach dem Login kopieren

Berechnung der verstrichenen Zeit

Mit std::chrono::time_point können wir die verstrichene Zeit einfach berechnen Zeit ab dem angegebenen historischen Datum:

auto now = std::chrono::system_clock::now();
auto duration = now - tp;
Nach dem Login kopieren

Zugriffszeit Komponenten

std::chrono::duration bietet Zugriff auf einzelne Zeitkomponenten:

  • duration.count() gibt die Gesamtzahl der Zeiteinheiten zurück (standardmäßig Sekunden).
  • duration.seconds() ruft Sekunden ab
  • duration.minutes() ruft ab Minuten
  • duration.hours() ruft Stunden ab
  • duration.days() liefert Tage

C 11 Support

GCC vor Version 5 implementiert std::get_time nicht. Es gibt jedoch auch eine Alternative mit strptime:

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Datumszeichenfolgen analysieren und Zeitberechnungen mit std::chrono von C 11 durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage