Когда std:: Chrono epoch?
std::chrono::time_point::time_since_epoch()
возвращает duration
, примерно time_point
в прошлом. Когда такое time_point
? Это зависит от реализации C++ или определяется стандартом c++? Или это де-факто стандарт, чтобы установить эпоху на 1 января 1970 UTC?
1 ответов
это функция как конкретного clock
на time_point
относится к, и реализация этого clock
. Стандарт определяет три различных часов:
system_clock
steady_clock
high_resolution_clock
и стандарт не определяет эпоху для любого из этих часов.
программисты (вы) также могут создавать свои собственные часы, которые могут указывать или не указывать эпоху.
там де-факто (неофициальный) стандарт std::chrono::system_clock::time_point
имеет эпоху, соответствующую Время Unix. Это определяется как продолжительность времени, прошедшего с 00:00: 00 по координированному универсальному времени (UTC), четверг, 1 января 1970 года, не считая високосных секунд.
чистки рядов, вот библиотека даты/времени который использует этот де-факто стандарт.
нет де-факто стандарта для двух других часов, указанных в std. Кроме того,high_resolution_clock
is разрешено быть псевдонимом типа для любого system_clock
или steady_clock
.
на OS X,high_resolution_clock
- это псевдоним для типа steady_clock
и steady_clock
- это количество наносекунд с момента загрузки компьютера (никакого отношения к UTC).