Пространства имён
Варианты
Действия

std::chrono::time_point

Материал из cppreference.com
< cpp‎ | chrono
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
std::chrono::time_point
 
Определено в заголовочном файле <chrono>
template<

    class Clock,
    class Duration =typename Clock::duration

>class time_point;
(начиная с C++11)

Шаблонный класс std::chrono::time_point представляет момент во времени. Реализован так, как если бы он хранил значение типа Duration, указывающее временной интервал от начала эпохи Clock.

Clock должен соответствовать требованиям для Clockили быть std::chrono::local_t(начиная с C++20).

(до C++23)

Содержание

[править]Типы-элементы

Тип элемент Определение
clockClock, часы, которыми измеряется этот момент времени
durationDuration, тип std::chrono::duration используемый для измерения времени, прошедшего с начала эпохи
repRep, арифметический тип, представляющий количество тиков длительности
periodPeriod, тип std::ratio, представляющий период длительности в тиках

[править]Функции-элементы

конструирует новый момент времени
(public функция-элемент)[править]
возвращает момент времени как длительность с момента старта его часов
(public функция-элемент)[править]
изменяет момент времени на указанную длительность
(public функция-элемент)[править]
увеличивает или уменьшает длительность
(public функция-элемент)[править]
[static]
возвращает момент времени, соответствующий наименьшей длительности
(public static функция-элемент)[править]
[static]
возвращает момент времени, соответствующий наибольшей длительности
(public static функция-элемент)[править]

[править]Функции, не являющиеся элементами

выполняет операции сложения и вычитания, связанные с моментом времени
(шаблон функции)[править]
(C++11)(C++11)(удалено в C++20)(C++11)(C++11)(C++11)(C++11)(C++20)
сравнивает два момента времени
(шаблон функции)[править]
преобразует момент времени в другой момент времени на тех же часах с другой длительностью
(шаблон функции)[править]
преобразует time_point в другой, округляя в меньшую сторону
(шаблон функции)[править]
преобразует time_point в другой, округляя в большую сторону
(шаблон функции)[править]
преобразует time_point в другой, округляя до ближайшего, или до чётного в промежуточных случаях
(шаблон функции)[править]

[править]Вспомогательные классы

специализация свойства std::common_type
(специализация шаблона класса)[править]
поддержка хэширования для std::chrono::time_point
(специализация шаблона класса)

[править]Пример

#include <algorithm>#include <chrono>#include <ctime>#include <iomanip>#include <iostream>   void slow_motion(){staticint a[]{1,2,3,4,5,6,7,8,9,10,11,12};// Генерирует Γ(13) == 12! перестановок:while(std::ranges::next_permutation(a).found){}}   int main(){usingnamespace std::literals;// позволяет буквальные суффиксы, например// 24h, 1ms, 1s.const std::chrono::time_point<std::chrono::system_clock> now =std::chrono::system_clock::now();   conststd::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();   constauto end =std::chrono::steady_clock::now();std::cout<<"Медленные расчёты заняли "<<std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()<<"мкс ≈ "<<(end - start)/ 1ms <<"мс ≈ "// почти эквивалентная форма, приведённого выше,<<(end - start)/ 1s <<"с.\n";// но с использованием миллисекунд и секунд// соответственно}

Возможный вывод:

24 часа назад время было 2021-02-15 18:28:52. Разные часы несопоставимы: Системное время: 1666497022681282572нс Стабильное время: 413668317434475нс Медленные расчёты заняли 2090448мкс ≈ 2090мс ≈ 2с.

[править]Смотрите также

(C++11)
временной интервал
(шаблон класса)[править]
представляет конкретный год, месяц и день
(класс)[править]
close