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

Функции для работы с датой и временем

Материал из cppreference.com
< cpp

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
общесистемные часы реального времени
Оригинал:
wall clock time from the system-wide realtime clock
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(класс) [править]
монотонная часы, которые никогда не будут скорректированы
Оригинал:
monotonic clock that will never be adjusted
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(класс) [править]
часы с наименьшим доступным периодом тика
(класс) [править]

[править] Момент времени

Момент времени представляет продолжительность времени, которое прошло с начала эпохи конкретных часов.

Заголовочный файл <chrono>
Пространство имён std::chrono
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