Namensräume
Varianten
Aktionen

Datums- und Zeitenunterstützung

Aus cppreference.com
< cpp

C++ unterstützt zwei Arten von Zeitmanipulationen:

  • Die chrono-Bibliothek ist eine Sammlung von flexiblen Typen, die das Benutzen von Zeiten, Zeiträumen und Zeitpunkten mit unterschiedlichen Präzisionsgraden (z.B. std::chrono::time_point) ermöglichen.
  • Die Datums- und Uhrzeitbibliothek im C-Stil (beispielsweise std::time).

Inhaltsverzeichnis

[Bearbeiten] Die chrono-Bibliothek

Die chrono-Bibliothek definiert drei Haupttypen (Dauer, Uhren und Zeitpunkte), sowie Hilfsfunktionen und gemeinsame typedefs.

[Bearbeiten] Zeitdauer

Eine Zeitdauer besteht aus einer Zeitspanne, die als eine Anzahl von Schritten einiger Zeiteinheit definiert ist. Beispielsweise könnte "42 Sekunden" durch eine Dauer, bestehend aus 42 Schritten einer einsekündigen Zeiteinheit dargestellt werden.

Defined in header <chrono>
Defined in namespace std::chrono
(C++11)
ein Zeitintervall
Original:
a time interval
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

(Klassen-Template) [edit]

[Bearbeiten] Uhren

Eine Uhr besteht aus einem Ausgangspunkt (oder Epoche) und einer Schrittweite. Zum Beispiel kann eine Uhr eine Epoche, die am 1. Januar 1970 began, und eine Schrittweite von 1 Sekunde besitzen. C++ definiert drei Typen von Uhren:

Defined in header <chrono>
Defined in namespace std::chrono
Uhr, die die systemweite Echtzeituhr zur Verfügung stellt
(Klasse) [edit]
streng monotone Uhr, die niemals angepasst wird
(Klasse) [edit]
die Uhr mit der kleinsten, verfügbaren Zeitschrittweite
(Klasse) [edit]

[Bearbeiten] Zeitpunkt

Ein Zeitpunkt ist eine Zeitdauer, die seit Beginn der Epoche der spezielle Uhr andauert.

Defined in header <chrono>
Defined in namespace std::chrono
ein Zeitpunkt
(Klassen-Template) [edit]

[Bearbeiten] Datums- und Uhrzeitbibliothek im C-Stil

Weiterhin sind die Datums- und Uhrzeitfunktionen im C-Stil, wie std::time_t, std::difftime und CLOCKS_PER_SEC verfügbar.

[Bearbeiten] Beispiel

Dieses Beispiel zeigt Informationen über die Ausführungszeit einer aufgerufenen Funktion:

#include <iostream>
#include <chrono>
#include <ctime>
 
int fibonacci(int n)
{
    if (n < 3) return 1;
    return fibonacci(n-1) + fibonacci(n-2);
}
 
int main()
{
    std::chrono::time_point<std::chrono::system_clock> start, end;
    start = std::chrono::system_clock::now();
    int result = fibonacci(42);
    end = std::chrono::system_clock::now();
 
    int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>
                             (end-start).count();
    std::time_t end_time = std::chrono::system_clock::to_time_t(end);
 
    std::cout << "finished computation at " << std::ctime(&end_time)
              << "elapsed time: " << elapsed_seconds << "s\n";
}

Possible output:

finished computation at Sat Jun 16 20:42:57 2012
elapsed time: 3s