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?