c++ - ¿Cuándo es std:: chrono epoch?
c++11 (1)
Es una función tanto del clock
específico al que se refiere el time_point
, como de la implementación de ese clock
. El estándar especifica tres relojes diferentes:
-
system_clock
-
steady_clock
-
high_resolution_clock
Y el estándar no especifica la época de ninguno de estos relojes.
Los programadores (usted) también pueden crear sus propios relojes, que pueden o no especificar una época.
Hay un estándar de facto (no oficial) que std::chrono::system_clock::time_point
tiene una época consistente con Unix Time . Esto se define como la duración que ha transcurrido desde las 00:00:00, hora universal coordinada (UTC), jueves 1 de enero de 1970, sin contar los segundos de salto.
Fwiw, aquí hay una biblioteca de fecha / hora que aprovecha este estándar de facto.
No hay un estándar de facto para los otros dos relojes especificados estándar. Además, se permite que high_resolution_clock
sea un alias de tipo para steady_clock
o steady_clock
.
En OS X, high_resolution_clock
es un alias de tipo para steady_clock
, y steady_clock
es un conteo de nanosegundos desde que la computadora arrancó (sin relación alguna con UTC).
std::chrono::time_point::time_since_epoch()
devuelve una duration
, referida a un time_point
en el pasado. ¿Cuándo es un time_point
? ¿Depende de la implementación de C ++ o está definido por el estándar de C ++? ¿O es un estándar de facto establecer la época del 1 de enero de 1970 UTC?