std::chrono::time_point::time_since_epoch()
возвращает duration
, упомянутый в некотором time_point
в прошлом. Когда такой time_point
? Это зависит от реализации C++ или определяется стандартом C++? Или это де-факто стандарт, чтобы установить эпоху до 1 января 1970 UTC?Когда есть std :: chrono epoch?
ответ
Это функция как конкретного clock
, так и его реализация clock
. Стандарт определяет три различных часов:
system_clock
steady_clock
high_resolution_clock
И стандарт не определяет эпоху для любого из этих часов.
Программисты (вы) также можете создавать собственные часы, которые могут или не могут указывать эпоху.
Существует де-факто (неофициальный) стандарт, согласно которому std::chrono::system_clock::time_point
имеет эпоху, соответствующую Unix Time. Это определяется как продолжительность времени, прошедшая с 00:00:00 координированного универсального времени (UTC), четверг, 1 января 1970 года, не считая секунд прыжка.
Fwiw, here is a date/time library, который использует этот де-факто стандарт.
Нет стандартного де-факто для двух других стандартных часов. Дополнительно high_resolution_clock
разрешено быть псевдонимом типа для system_clock
или steady_clock
.
На OS X, high_resolution_clock
типа псевдоним steady_clock
и steady_clock
является подсчетом наносекунд, так как компьютер не загружается (никакого отношения к UTC).
Для будущего читатели: есть ли у вас список ссылок на официальную документацию, где можно проверить, действительно ли это так? – MikeMB
Вот все документы на C++: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/ Среди этих документов будут проекты стандарта C++, которые содержат официальную спецификацию для '
Большое спасибо, я должен был уточнить: I означает, что есть какая-либо документация о фактическом поведении различных стандартных реализаций библиотек в отношении 'std :: chrono :: system_clock'. Это позволило бы избежать необходимости писать специфичные для платформы унитаты для проверки этого поведения. – MikeMB
'epoch' в целом представляет собой отправную точку для часов. В 'C++ 11 chrono' имеется более одного часа. – bolov
http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch – SChepurin
В этой статье объясняется это: http://www.informit.com/articles/article.aspx?p=1881386&seqNum=2 – newbie