std::chrono::time_point::time_since_epoch()
gibt eine duration
zurück, auf einige time_point
in der Vergangenheit verwiesen. Wann ist solch ein time_point
? Das hängt von der C++ - Implementierung ab oder ist vom C++ - Standard definiert? Oder ist es ein De-facto-Standard, um die Epoche auf den 1. Januar 1970 UTC zu setzen?Wann ist std :: chrono Epoche?
Antwort
Es ist eine Funktion sowohl der spezifischen clock
der time_point
bezieht sich auf, und die Umsetzung dieser clock
. Die Norm legt drei verschiedene Uhren:
system_clock
steady_clock
high_resolution_clock
Und der Norm legt die Epoche nicht für eine dieser Uhren.
Programmierer (Sie) können auch ihre eigenen Uhren erstellen, die eine Epoche angeben können oder nicht.
Es gibt einen de-facto (inoffiziellen) Standard, der std::chrono::system_clock::time_point
eine Epoche hat, die mit Unix Time übereinstimmt. Dies ist definiert als die Zeitdauer, die seit 00:00:00 Coordinated Universal Time (UTC), Donnerstag, 1. Januar 1970, verstrichen ist und Schaltsekunden nicht berücksichtigt.
Fwiw, here is a date/time library, die diesen De-facto-Standard nutzt.
Es gibt keinen De-facto-Standard für die anderen beiden Std-spezifizierten Uhren. Zusätzlich kann high_resolution_clock
ein Typalias für system_clock
oder steady_clock
sein.
Unter OS X high_resolution_clock
ist eine Art Alias für steady_clock
und steady_clock
ist eine Anzahl von Nanosekunden, da der Computer (was auch immer zu UTC keine Beziehung) gestartet.
Für die Zukunft Leser: Haben Sie eine Liste mit Links zur offiziellen Dokumentation, in der Sie nachsehen können, ob dies noch zutrifft? – MikeMB
Hier sind alle C++ Papiere: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/ Unter diesen Dokumenten werden Entwürfe des C++ Standards sein, der die offizielle Spezifikation für '
Vielen Dank, ich hätte präzisieren sollen: Ich gemeint ist, wenn es eine Dokumentation über das De-facto-Verhalten der verschiedenen Standard-Bibliotheksimplementierungen in Bezug auf 'std :: chrono :: system_clock 'gibt. Dies würde die Notwendigkeit vermeiden, plattformspezifische Unittests zu schreiben, um dieses Verhalten zu verifizieren. – MikeMB
- 1. Zeitdifferenzen mit std :: Chrono :: System_Clock/std :: Chrono :: high_resolution_clock
- 2. Probleme mit std :: Chrono
- 3. Std :: Chrono & Boost.Units
- 4. std :: Chrono: add benutzerdefinierte Dauer
- 5. BSON Typen und Std :: Chrono
- 6. Warum ist std :: chrono :: system_clock :: to_time_t() nicht consxpr?
- 7. Warum ist Std :: Chrono :: Dauer basierend auf Sekunden
- 8. Konvertieren von Struct Timespec zu Std :: Chrono ::?
- 9. Korrekte Methode der Verwendung von Std :: Chrono
- 10. Std :: chrono create konstante Zeit Runden
- 11. Boost :: Asio :: Deadline_timer mit Std :: Chrono Zeitwerte
- 12. Erhalten Sie POSIX-Epoche als system_clock :: time_point
- 13. Wie erstelle ich eine benutzerdefinierte Uhr für die Verwendung in Std :: Chrono-Funktionen?
- 14. Wann std :: async vs. std :: threads verwenden?
- 15. Warum ist std :: mutex schneller als std :: atomic?
- 16. Wie kann dieser Code constexpr sein? (Std :: Chrono)
- 17. Gibt es eine Möglichkeit, std :: chrono :: nanoseconds 0 zuzuweisen
- 18. Auflösung von std :: Chrono :: high_resolution_clock entspricht nicht Messungen
- 19. Ausgabe von Datum und Uhrzeit in C++ mit std :: chrono
- 20. Konvertieren von ISO-Zeit in Std :: Chrono :: Time_point
- 21. sekunden als doppelt in std :: chrono :: duration konvertieren?
- 22. Akzeptieren std :: chrono :: Dauer einer beliebigen Darstellung/Periode
- 23. Wie kann ich std :: chrono :: duration als Vorlageparameter verwenden?
- 24. Std :: Chrono berechnen den Unterschied in verschiedenen Verhältnis
- 25. Wann verwende ich std :: random_device?
- 26. Ist Isnan im Namespace std ::? Mehr allgemein, wann ist std :: notwendig, optional oder zu vermeiden?
- 27. Get Chrono Sekunden in Float
- 28. Was ist der Grund dafür, dass std :: chrono :: duration keine sofortige Tick-Count-Manipulation hat?
- 29. Was ist std :: Verfall und wann sollte es verwendet werden?
- 30. Wann sollte ich std :: convert :: From std :: convert :: Into implementieren?
"Epoche" im Allgemeinen den Ausgangspunkt einer Uhr darstellt. Es gibt mehr als eine Uhr in 'C++ 11 chrono'. – bolov
http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch – SChepurin
Dieser Artikel erklärt das: http://www.informit.com/articles/article.aspx?p=1881386&seqNum=2 – newbie