<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 , weekday year и т. д., с использованием указанного формата. |
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;