Для округления timestamp до определенной единицы времени, такой как секунды, минуты, часы или дни, в C++ можно использовать различные подходы.
Самый простой способ округления timestamp до секунд состоит в том, чтобы разделить значение timestamp на количество миллисекунд в секунде (1000), округлить полученный результат до целого числа и затем умножить на количество миллисекунд в секунде.
Вот пример кода, демонстрирующий этот подход:
#include <iostream> #include <cmath> #include <chrono> int main() { // Получаем текущий timestamp в миллисекундах auto timestamp = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); // Округляем timestamp до секунд auto roundedTimestamp = std::round(timestamp / 1000.0) * 1000; std::cout << "Округленное время: " << roundedTimestamp << std::endl; return 0; }
Аналогичным образом можно округлить timestamp до других единиц времени.
Например, для округления до минут нужно разделить timestamp на количество миллисекунд в минуте (60 000), округлить полученный результат до целого числа и затем умножить на количество миллисекунд в минуте (60 000):
auto roundedTimestamp = std::round(timestamp / 60000.0) * 60000;
Для округления до часов нужно разделить timestamp на количество миллисекунд в часе (3 600 000), округлить полученный результат до целого числа и затем умножить на количество миллисекунд в часе (3 600 000):
auto roundedTimestamp = std::round(timestamp / 3600000.0) * 3600000;
Для округления до дней нужно разделить timestamp на количество миллисекунд в сутках (86 400 000), округлить полученный результат до целого числа и затем умножить на количество миллисекунд в сутках (86 400 000):
auto roundedTimestamp = std::round(timestamp / 86400000.0) * 86400000;
Таким образом, вы можете использовать эти подходы для округления timestamp до необходимой единицы времени в C++.