Поделиться через


<chrono>

Включите стандартный заголовок <chrono> , чтобы определить классы и функции, которые представляют и управляют длительностью и моментами времени.

Начиная с Visual Studio 2015 реализация steady_clock изменилась в соответствии с требованиями стандарта C++ для устойчивости и монотонности:

  • steady_clock теперь основан на QueryPerformanceCounter()
  • high_resolution_clockтеперь является типизированным для steady_clock реализации Microsoft C++ steady_clock::time_point .typedef chrono::time_point<steady_clock> Однако это не обязательно относится к другим реализациям.

Требования

Заголовок: <chrono>

Региональные законодательные органы иногда вносят изменения в часовые пояса, а международный орган стандартов указывает, когда следует учитывать новые секунды прыжка. База данных этих изменений была добавлена в Windows 10. В частности:

Функция Версия клиента Версия сервера
Скачивные обновления второй базы данных Windows 10 версии 1809 или более поздней Windows Server 2019 или более поздней версии;
Поддержка часового пояса Windows 10 версии 1903/19H1 или более поздней Windows Server 2022 или более поздней версии

Использование средств часового пояса в старых версиях Windows приводит к ошибке среды выполнения.

Пространство имен: std

Календрические типы

Имя Описание
Структура common_type Описывает специализации шаблона common_type класса для экземпляров duration и time_point.
Класс day День месяца. Например, 25-й день месяца.
Класс duration Интервал времени.
Структура duration_values Предоставляет конкретные значения для параметра Rep шаблона duration.
Класс hh_mm_ss Разделяется на duration часы:минуты:секунды.
last_spec Используется для указания последнего элемента в месяц, например последний день недели месяца (последний вторник февраля 2020 г.) или последний день месяца (последний день апреля 2019 г.).
Класс leap_second Дата и значение вставленного прыжка секунды.
Структура leap_second_info Данные, возвращаемые get_leap_second_info.
Класс month Месяц года. Например, июль.
Класс month_day Определенный день определенного месяца. Например, 30 июля.
Класс month_day_last Последний день месяца.
Класс month_weekday Nth weekday определенного месяца.
Класс month_weekday_last Nth weekday определенного месяца.
Класс time_point Момент времени.
Класс weekday День недели.
Класс weekday_last Последний рабочий день месяца.
Класс weekday_indexed Объединяет день недели с индексом, который представляет будний день месяца.
Класс year Год в григорианском календаре.
Класс year_month Год и месяц. День не указан.
Класс year_month_day Год, месяц и день.
Класс year_month_day_last Последний день определенного месяца и года.
Класс year_month_weekday Определенный год, месяц и nth будний день месяца.
Класс year_month_weekday_last Определенный год, месяц и последний рабочий день месяца.

Часы

Имя Описание
Класс file_clock Псевдоним часов, используемых std::filesystem::file_time_typeдля выражения меток времени файла.
Класс gps_clock Часы, которые хранят время GPS. Время мер, начиная с первого воскресенья января 1980 г. в 00:00:00 UTC.
Структура high_resolution_clock Часы с наносекондным периодом галочки.
Структура local_t Псевдочасы, используемые в качестве аргумента time_point шаблона, указывают на то, что time_point представляет локальное время.
Структура steady_clock steady Часы. Эти часы предпочтительнее для измерения интервалов времени.
Структура system_clock Часы на основе часов в режиме реального времени системы.
Класс tai_clock Меры международного атомарного времени (ТАЙ) начиная с четверга, 1 января 1958 года в 00:00:00. Эти часы не учитываются в секундах прыжка.
Класс utc_clock Меры времени с 00:00:00 UTC в четверг, 1 января 1970 года. Эти часы учитываются в секундах прыжка и является стандартом времени, используемого по всему миру.

Часовые пояса

Имя Описание
choose Перечисление, указывающее, как разрешить неоднозначное преобразование объекта local_time в .sys_time
local_info Предоставляет низкоуровневый интерфейс для сведений часового пояса о результате преобразования в local_time объект sys_time.
sys_info Предоставляет низкоуровневый интерфейс для сведений часового пояса о результате преобразования в sys_time объект local_time.
Класс time_zone Все переходы часового пояса для определенной географической области.
Класс time_zone_link Альтернативное имя для time_zoneобъекта .
Структура tzdb Представляет копию базы данных часового пояса.
Класс tzdb_list Одиночный список баз данных часового пояса.
Класс zoned_time Связывание time_zone a и a time_point с заданной точностью.
Структура zoned_traits Используется для связывания другого часового пояса по умолчанию с zoned_timeпользовательским именем и при необходимости сопоставляется с этим часовой поясом по умолчанию.

Исключения

Имя Описание
ambiguous_local_time Ошибка, возникаемая при local_time преобразовании в объект sys_time , и результат является неоднозначным.
nonexistent_local_time Ошибка, возникающая при local_time преобразовании в объект sys_time , и результатом является время, которое не существует.

Функции

Имя Описание
ceil(duration) ceil Возвращает объект в качестве указанного duration типа.
ceil(time_point) ceil Возвращает объект в качестве указанного time_point типа.
clock_cast Преобразуется time_point из одного часа в эквивалент time_point для другого часа.
duration_cast Приводит объект duration к указанному типу.
floor(duration) floor Возвращает объект в качестве указанного duration типа.
floor(time_point) floor Возвращает объект в качестве указанного time_point типа.
from_stream() Синтаксический анализ входного потока в одном из std::chrono типов времени или интервала, таких как day, month, weekdayyearи т. д., с использованием указанного формата.
get_leap_second_info Возвращает структуруleap_second_info.
is_am Указывает, hours является ли объект AM.
is_pm Указывает, hours является ли объект PM.
locate_zone Возвращает указанный часовой пояс.
make12 Возвращает 12-часовую hours форму.
make24 Возвращает 24-часовую hours форму.
round(duration) duration Возвращает объект, округленный как указанный тип.
round(time_point) time_point Возвращает объект, округленный как указанный тип.
time_point_cast Приводит объект time_point к указанному типу.

Часовой пояс, связанный

Имя Описание
current_zone Возвращает текущий часовой пояс.
get_tzdb Возвращает первую запись базы данных часового пояса.
get_tzdb_list Возвращает список записей базы данных часового пояса.
reload_tzdb Возвращает обновленную запись базы данных часового пояса.
remote_version Проверяет наличие обновленной записи базы данных часового пояса.

Операторы

Имя Описание
operator- Вычитайте или отменяйте различные <chrono> объекты.
operator!= Оператор неравенства, используемый с различными <chrono> объектами.
operator modulo Оператор для операций вычисления остатка от деления над объектами duration.
operator* Оператор умножения для объектов duration.
operator/ Оператор деления для объектов duration.
operator/ Предоставляет синтаксис для создания дат календаря.
operator+ Добавьте в различные <chrono> объекты.
operator< Определяет, являются ли различные <chrono> объекты меньше, чем другие.
operator<= Определяет, являются ли различные <chrono> объекты меньше или равны другим.
operator== Определяет, равны ли различные <chrono> объекты друг другу.
operator> Определяет, являются ли различные <chrono> объекты больше другого.
operator>= Определяет, являются ли различные <chrono> объекты больше или равны другим.

Определения типов

Дополнительные сведения о типах коэффициентов, используемых в следующих типах типов, см. в разделе <ratio>.

Удобные duration типы

Имя Описание
typedef duration<long long, nano> nanoseconds; Синоним для duration типа, который имеет галочку периода в один миллиард (1/1000 000 000) секунды.
typedef duration<long long, micro> microseconds; Синоним для duration типа, который имеет тиковый период в один миллион (1/1000 000) секунды.
typedef duration<long long, milli> milliseconds; Синоним для duration типа, который имеет тиковый период в одну тысячу (1/1000) секунды.
typedef duration<long long> seconds; Синоним для duration типа, имеющего 1 секунду галочки.
typedef duration<int, ratio<60>> minutes; Синоним для duration типа, который имеет период галочки в 1 минуту.
typedef duration<int, ratio<3600>> hours; Синоним для duration типа, который имеет период галочки в 1 час.

Удобные time_point типы

Имя Описание
file_time Синоним для time_point<file_clock, Duration>. time_point Представляет для file_clock. Например, file_time<seconds> ft;укажите Duration.
gps_seconds Синоним gps_time<seconds>; количества секунд, представленный time_point связанным с ним gps_clock.
gps_time Синоним для time_point<gps_clock, Duration>. time_point Представляет для gps_clock. Например, gps_time<milliseconds> gps;укажите Duration.
local_days Синоним для local_time<days>. Количество дней, представленное не time_point связанным с часовыми поясами.
local_seconds Синоним для local_time<seconds>.
local_time Синоним для time_point<local_t, Duration>. time_point Представляет собой локальное время, которое еще не связано с часовым поясом. Например, local_time<seconds> lt;укажите Duration. А local_time — это местное время где-то. Это не текущее локальное время часов компьютера. Только если вы связываете с time_zone ним local_time точку во времени, которую можно преобразовать в время UTC, или время в определенном часовом поясе.
sys_days Синоним для sys_time<days>. Число дней с эпохи system_clock, представленной time_point тем, что связано с .system_clock
sys_seconds Синоним для sys_time<seconds>. Количество непрысковых секунд с эпохи system_clock (1 января 1970 г. 00:00 UTC), представленное time_point тем, что связано с system_clock.
sys_time Синоним для time_point<system_clock, Duration>. Например, sys_time<seconds> st;укажите Duration. time_point Представляет возвращаемый объектsystem_clock::now(). Он представляет время Unix, которое близко приближается к времени UTC.
tai_seconds Синоним для tai_time<seconds>. Количество секунд, представленное time_point связанным с ним tai_clock.
tai_time Синоним для time_point<tai_clock, Duration>. Например, tai_time<seconds> tt;вы предоставляете Duration. time_point Представляет для tai_clock.
utc_seconds Синоним для utc_time<seconds>;
utc_time Синоним для time_point<utc_clock, Duration>. Например, utc_time<seconds> ut;вы предоставляете Duration. time_pointПредставляет для utc_clock.

Признаки типов

Имя Описание
clock_time_conversion Признак, указывающий, как преобразовать time_point часы из одного часа в другой.
is_clock Проверьте, является ли тип часов.
treat_as_floating_point Проверьте, можно ли преобразовать объект duration в другой duration , имеющий другой период галочки.

Литералы

(C++11) Заголовок <chrono> определяет следующие пользовательские литералы , которые можно использовать для повышения удобства, безопасности типов и удобства обслуживания кода. Эти литералы определяются в встроенном literals::chrono_literals пространстве имен и находятся в области, когда std::chrono находится в области.

Объявление Description
hours operator "" h(unsigned long long Val) Указывает часы как целочисленное значение.
duration<double, ratio<3600>> operator "" h(long double Val) Указывает часы как значение с плавающей запятой.
minutes (operator "" min)(unsigned long long Val) Указывает минуты как целочисленное значение.
duration<double, ratio<60>> (operator "" min)( long double Val) Указывает минуты как значение с плавающей запятой.
seconds operator "" s(unsigned long long Val) Указывает минуты как целочисленное значение.
duration<double> operator "" s(long double Val) Указывает секунды как значение с плавающей запятой.
milliseconds operator "" ms(unsigned long long Val) Указывает миллисекунды как целочисленное значение.
duration<double, milli> operator "" ms(long double Val) Указывает миллисекунды как значение с плавающей запятой.
microseconds operator "" us(unsigned long long Val) Указывает микросекунды как целочисленное значение.
duration<double, micro> operator "" us(long double Val) Указывает микросекунды как значение с плавающей запятой.
nanoseconds operator "" ns(unsigned long long Val) Указывает наносекунды как целочисленное значение.
duration<double, nano> operator "" ns(long double Val) Указывает наносекунды как значение с плавающей запятой.

В следующих примерах показано, как использовать <chrono> литералы:

constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;

См. также

Справочник по файлам заголовков