Namespaces
Variants

std::chrono:: time_point

From cppreference.net
Definiert in Header <chrono>
template <

class Clock,
class Duration = typename Clock :: duration

> class time_point ;
(seit C++11)

Klassentemplate std::chrono::time_point repräsentiert einen Zeitpunkt. Es ist so implementiert, als speichere es einen Wert des Typs Duration , der das Zeitintervall vom Beginn der Epoche der Clock angibt.

Clock muss die Anforderungen für Clock oder std::chrono::local_t sein (seit C++20) .

(bis C++23)

Inhaltsverzeichnis

Mitgliedertypen

Typ Beschreibung
Clock clock
die Uhr, auf der dieser Zeitpunkt gemessen wird
(typedef)
Duration duration
ein std::chrono::duration Typ, der zur Messung der Zeit seit der Epoche verwendet wird
(typedef)
duration::rep rep
ein arithmetischer Typ, der die Anzahl der Ticks der Dauer repräsentiert
(typedef)
duration::period period
ein std::ratio Typ, der die Tick-Periode der Dauer repräsentiert
(typedef)

Memberfunktionen

Konstruiert einen neuen Zeitpunkt
(öffentliche Elementfunktion)
gibt den Zeitpunkt als Dauer seit Start der Uhr zurück
(öffentliche Elementfunktion)
modifiziert den Zeitpunkt um die gegebene Dauer
(öffentliche Elementfunktion)
erhöht oder verringert die Dauer
(öffentliche Elementfunktion)
[static]
gibt den Zeitpunkt zurück, der der kleinsten Dauer entspricht
(öffentliche statische Elementfunktion)
[static]
gibt den Zeitpunkt zurück, der der größten Dauer entspricht
(öffentliche statische Elementfunktion)

Nicht-Member-Funktionen

führt Additions- und Subtraktionsoperationen mit einem Zeitpunkt durch
(Funktions-Template)
(C++11) (C++11) (entfernt in C++20) (C++11) (C++11) (C++11) (C++11) (C++20)
vergleicht zwei Zeitpunkte
(Funktions-Template)
konvertiert einen Zeitpunkt zu einem anderen Zeitpunkt auf derselben Uhr mit einer anderen Dauer
(Funktions-Template)
konvertiert einen time_point zu einem anderen, abgerundet
(Funktions-Template)
konvertiert einen time_point zu einem anderen, aufgerundet
(Funktions-Template)
konvertiert einen time_point zu einem anderen, gerundet auf den nächsten Wert, bei Gleichheit zur geraden Zahl
(Funktions-Template)

Hilfsklassen

spezialisiert das std::common_type Merkmal
(Klassen-Template-Spezialisierung)
Hash-Unterstützung für std::chrono::time_point
(Klassen-Template-Spezialisierung)

Beispiel

#include <algorithm>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <iostream>
void slow_motion()
{
    static int a[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    // Generate Γ(13) == 12! permutations:
    while (std::ranges::next_permutation(a).found) {}
}
int main()
{
    using namespace std::literals; // enables literal suffixes, e.g. 24h, 1ms, 1s.
    const std::chrono::time_point<std::chrono::system_clock> now =
        std::chrono::system_clock::now();
    const std::time_t t_c = std::chrono::system_clock::to_time_t(now - 24h);
    std::cout << "Vor 24 Stunden war die Zeit "
              << std::put_time(std::localtime(&t_c), "%F %T.\n") << std::flush;
    const std::chrono::time_point<std::chrono::steady_clock> start =
        std::chrono::steady_clock::now();
    std::cout << "Verschiedene Uhren sind nicht vergleichbar: \n"
                 "  Systemzeit: " << now.time_since_epoch() << "\n"
                 "  Stetige Zeit: " << start.time_since_epoch() << '\n';
    slow_motion();
    const auto end = std::chrono::steady_clock::now();
    std::cout
        << "Langsame Berechnungen dauerten "
        << std::chrono::duration_cast<std::chrono::microseconds>(end - start) << " ≈ "
        << (end - start) / 1ms << "ms ≈ " // almost equivalent form of the above, but
        << (end - start) / 1s << "s.\n";  // using milliseconds and seconds accordingly
}

Mögliche Ausgabe:

Vor 24 Stunden war die Zeit 2021-02-15 18:28:52.
Verschiedene Uhren sind nicht vergleichbar:
  Systemzeit: 1666497022681282572ns
  Stetige Zeit: 413668317434475ns
Langsame Berechnungen dauerten 2090448µs ≈ 2090ms ≈ 2s.

Siehe auch

(C++11)
ein Zeitintervall
(Klassentemplate)
repräsentiert ein bestimmtes year , month und day
(Klasse)