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
- 1. C++ boost :: chrono vs std: chrono time from epoch (получить текущее системное время) в окнах
- 2. C++: std :: chrono or boost :: chrono
- 3. std :: chrono для частот?
- 4. Вектор std :: chrono :: миллисекунды
- 5. Правильный метод использования std :: chrono
- 6. std :: chrono :: duration integer трудности
- 7. g ++ 4.8. * Std :: chrono Undeclared
- 8. Как форматировать std :: chrono durations?
- 9. Типы BSON и std :: chrono
- 10. std :: chrono :: time_point недопустимое значение
- 11. Как сериализовать std :: chrono :: minutes
- 12. Как преобразовать std :: chrono :: time_point в uint64_t?
- 13. Слишком много <chrono> ошибок (std :: chrono :: timepoint) (VS2015)
- 14. Есть ли способ назначить ноль на std :: chrono :: nanoseconds
- 15. C++ Как преобразовать std :: chrono :: time_point в long и back
- 16. std :: chrono вычислить разницу в разном соотношении
- 17. std :: chrono create constant time laps
- 18. std :: chrono вызывает QueryPerformanceFrequency несколько раз?
- 19. std :: chrono :: system_clock :: now() без авто
- 20. Почему std :: chrono :: продолжительность на основе секунд
- 21. Взаимодействие между boost :: date_time и std :: chrono
- 22. std :: chrono default duration for time_since_epoch
- 23. Почему std :: chrono :: system_clock :: to_time_t() not constexpr?
- 24. Преобразование из struct timespec в std :: chrono ::?
- 25. Преобразование времени ISO в std :: chrono :: time_point
- 26. Базовый таймер с std :: thread и std :: chrono
- 27. Невозможно использовать std :: chrono с std :: future - GLIBCXX_3.4.19 не найден
- 28. Как сериализовать std :: chrono :: duration с Boost?
- 29. boost :: serialize и std :: chrono :: system_clock :: time_point
- 30. C++ получить период std :: chrono :: duration
'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