Функции для работы с датой и временем
C++ поддерживает два типа манипуляций с датой и временем:
- Библиотека
chrono, гибкая коллекция типов, которые позволяют отслеживать время с различной степенью точности (например, std::chrono::time_point). - Библиотека с функциями работы с датой и временем в C-стиле (например, std::time).
Содержание |
[править] Библиотека chrono
Библиотека chrono определяет три основных типа (продолжительность, часы и моменты времени), а также вспомогательные функции и общие определения типов.
[править] Продолжительность
Продолжительность представляет промежуток времени, определяемый как некоторое количество тактов в некоторую единицу времени. Например, "42 секунды" могут быть представлены продолжительностью состоящей из последовательности 42 тактов по одной секунде.
| Заголовочный файл
<chrono> | |
| Пространство имён
std::chrono | |
| (C++11) |
интервал времени Оригинал: a time interval Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон класса) |
[править] Часы
Часы представляют начальную точку (или эпоху) и скорость изменения. Например, часы могут иметь эпоху по состоянию на 1 января 1970 года и меняться каждую секунду. C++ определяет три типа часов:
| Заголовочный файл
<chrono> | |
| Пространство имён
std::chrono | |
| (C++11) |
общесистемные часы реального времени Оригинал: wall clock time from the system-wide realtime clock Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (класс) |
| (C++11) |
монотонные часы, которые никогда не будут скорректированы Оригинал: monotonic clock that will never be adjusted Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (класс) |
| (C++11) |
часы с наименьшим доступным периодом тика (класс) |
[править] Момент времени
Момент времени представляет продолжительность времени, которое прошло с начала эпохи конкретных часов.
| Заголовочный файл
<chrono> | |
| Пространство имён
std::chrono | |
| (C++11) |
a point in time (шаблон класса) |
[править] Работа с датой и временем в C-стиле
Также предусмотрены функции для работы с датой и временем в стиле языка C, такие как std::time_t, std::difftime, и CLOCKS_PER_SEC.
[править] Пример
Этот пример отображает информацию о времени выполнения вызова функции
#include <iostream> #include <chrono> #include <ctime> int fibonacci(int n) { if (n < 3) return 1; return fibonacci(n-1) + fibonacci(n-2); } int main() { std::chrono::time_point<std::chrono::system_clock> start, end; start = std::chrono::system_clock::now(); int result = fibonacci(42); end = std::chrono::system_clock::now(); int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds> (end-start).count(); std::time_t end_time = std::chrono::system_clock::to_time_t(end); std::cout << "Вычисления закончены в " << std::ctime(&end_time) << "Время выполнения: " << elapsed_seconds << "s\n"; }
Возможный вывод:
Вычисления закончены в Sat Jun 16 20:42:57 2012 Время выполнения: 3s

