Функция floor
Функция floor округляет значение времени
вниз до ближайшей границы указанной длительности.
Она принимает время (например, момент времени
time_point) и единицу измерения, до которой
нужно выполнить округление. Функция возвращает
новое значение времени, усечённое вниз до
заданной точности. Первым параметром передаётся
округляемое значение времени, а вторым - тип
длительности, задающий точность округления.
Синтаксис
std::chrono::floor<Duration>(time_point)
Пример
Давайте округлим момент времени вниз до секунд:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
auto now = system_clock::now();
auto rounded = floor<seconds>(now);
cout << "Original: " << now.time_since_epoch().count() << endl;
cout << "Rounded: " << rounded.time_since_epoch().count() << endl;
return 0;
}
Результат выполнения кода:
"Original: 1700000000123456"
"Rounded: 1700000000000000"
Пример
Давайте округлим момент времени вниз до минут и выведем разницу:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
int main()
{
auto now = system_clock::now();
auto rounded = floor<minutes>(now);
auto diff = duration_cast<seconds>(now - rounded);
cout << "Diff in seconds: " << diff.count() << endl;
return 0;
}
Результат выполнения кода:
"Diff in seconds: 42"
Смотрите также
-
класс
system_clock,
который представляет системные часы -
класс
time_point,
который представляет момент времени -
функция
time_point_cast,
которая преобразует момент времени к другой длительности -
функция
difftime,
которая возвращает разницу между двумя моментами времени