Когда 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).