Это функция как специфического clock
, на который ссылается time_point
, так и реализации этого clock
. Стандарт определяет три разных такта:
system_clock
steady_clock
high_resolution_clock
И стандарт не указывает эпоху для любого из этих часов.
Программисты (вы) также можете создавать собственные часы, которые могут или не могут указывать эпоху.
Там является фактическим (неофициальным) стандартом, который std::chrono::system_clock::time_point
имеет эпоху, согласующуюся с Unix Time . Это определяется как продолжительность времени, прошедшая с 00:00:00. Скоординированное всеобщее время (UTC), четверг, 1 января 1970 года, не считая секунд прыжка.
Fwiw, здесь дата / time library , которая использует этот де-факто стандарт.
Нет стандартного де-факто для двух других стандартных часов. Дополнительно high_resolution_clock
разрешено быть псевдонимом типа для system_clock
или steady_clock
.
В OS X high_resolution_clock
является псевдонимом типа для steady_clock
, а steady_clock
является количество наносекунд с момента загрузки компьютера (никакого отношения к UTC).
Можно также хотеть взглянуть на то, как git
делает это. По существу каждый раз, когда Вы делаете git diff
под капотом сделано, древовидное сравнение.