std::chrono:: time_point
|
Определено в заголовочном файле
<chrono>
|
||
|
template
<
class
Clock,
|
(начиная с C++11) | |
Шаблон класса
std::chrono::time_point
представляет точку во времени. Он реализован таким образом, как если бы хранил значение типа
Duration
, указывающее временной интервал от начала эпохи
Clock
.
|
|
(until C++23) |
Содержание |
Типы членов
| Тип | Описание |
Clock
clock
|
часы, на которых измеряется данная временная точка
(typedef) |
Duration
duration
|
тип
std::chrono::duration
используемый для измерения времени с начала эпохи
(typedef) |
duration::rep
rep
|
арифметический тип, представляющий количество тиков длительности
(typedef) |
duration::period
period
|
тип
std::ratio
представляющий период тика длительности
(typedef) |
Функции-члены
|
создает новую точку времени
(публичная функция-член) |
|
|
возвращает точку времени как длительность с начала эпохи своих часов
(публичная функция-член) |
|
|
модифицирует точку времени на заданную длительность
(публичная функция-член) |
|
|
увеличивает или уменьшает длительность
(публичная функция-член) |
|
|
[static]
|
возвращает точку времени, соответствующую наименьшей длительности
(публичная статическая функция-член) |
|
[static]
|
возвращает точку времени, соответствующую наибольшей длительности
(публичная статическая функция-член) |
Функции, не являющиеся членами класса
|
(C++11)
|
выполняет операции сложения и вычитания с участием точки времени
(шаблон функции) |
|
(C++11)
(C++11)
(удалён в C++20)
(C++11)
(C++11)
(C++11)
(C++11)
(C++20)
|
сравнивает две точки времени
(шаблон функции) |
|
(C++11)
|
преобразует точку времени в другую точку времени на тех же часах, с другой длительностью
(шаблон функции) |
|
(C++17)
|
преобразует time_point в другой, округляя вниз
(шаблон функции) |
|
(C++17)
|
преобразует time_point в другой, округляя вверх
(шаблон функции) |
|
(C++17)
|
преобразует time_point в другой, округляя до ближайшего, при равенстве к чётному
(шаблон функции) |
Вспомогательные классы
|
специализирует
std::common_type
трейт
(специализация шаблона класса) |
|
|
поддержка хеширования для
std::chrono::time_point
(специализация шаблона класса) |
Пример
#include <algorithm> #include <chrono> #include <ctime> #include <iomanip> #include <iostream> void slow_motion() { static int a[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; // Generate Γ(13) == 12! permutations: while (std::ranges::next_permutation(a).found) {} } int main() { using namespace std::literals; // enables literal suffixes, e.g. 24h, 1ms, 1s. const std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now(); const std::time_t t_c = std::chrono::system_clock::to_time_t(now - 24h); std::cout << "24 часа назад время было " << std::put_time(std::localtime(&t_c), "%F %T.\n") << std::flush; const std::chrono::time_point<std::chrono::steady_clock> start = std::chrono::steady_clock::now(); std::cout << "Разные часы несравнимы: \n" " Системное время: " << now.time_since_epoch() << "\n" " Монотонное время: " << start.time_since_epoch() << '\n'; slow_motion(); const auto end = std::chrono::steady_clock::now(); std::cout << "Медленные вычисления заняли " << std::chrono::duration_cast<std::chrono::microseconds>(end - start) << " ≈ " << (end - start) / 1ms << "мс ≈ " // almost equivalent form of the above, but << (end - start) / 1s << "с.\n"; // using milliseconds and seconds accordingly }
Возможный вывод:
24 часа назад время было 2021-02-15 18:28:52. Разные часы несравнимы: Системное время: 1666497022681282572ns Монотонное время: 413668317434475ns Медленные вычисления заняли 2090448µs ≈ 2090мс ≈ 2с.
Смотрите также
|
(C++11)
|
временной интервал
(шаблон класса) |
|
(C++20)
|
представляет конкретный
year
,
month
и
day
(класс) |