c++ c++11 epoch chrono

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?