Операции с датой в миллисекундах
Мне нужен способ управлять датой, включая миллисекунды: получить текущую дату и время, добавить к ней заданное количество миллисекунд. Первая часть завершена.
Версия C++ до C++14.
Спасибо.
Обновление: некоторая предыстория. У меня есть файл с отметкой времени в начале и количеством записей, каждая из которых содержит количество миллисекунд от этого начального времени:
2108 6 21 15 14 56 588 1000 message 5577 message 10000 message ...
Итак, мне нужно напечатать каждое сообщение с его полным временем. Поскольку у меня уже есть преобразование time_point в timestamp, мне действительно нужно противоположное преобразование, которое выглядит немного сложным.
Что я уже пробовал:
#include <chrono> #include <ctime> struct timestamp { int year; // 0-based int month; // [1-12] int day; // [1-31] int hour; // [0-23] int minute; // [0-59] int sec; // [0-59] int ms; // [0-999] }; // Done timestamp get_local_date() { timestamp t; auto now = std::chrono::system_clock::now(); auto seconds = std::chrono::time_point_cast<std::chrono::seconds>(now); auto fraction = now - seconds; auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(fraction); time_t tnow = std::chrono::system_clock::to_time_t(now); tm* ptm = localtime(&tnow); t.year = ptm->tm_year + 1990; t.month = ptm->tm_mon + 1; t.day = ptm->tm_mday; t.hour = ptm->tm_hour; t.minute = ptm->tm_min; t.sec = ptm->tm_sec; t.ms = static_cast<int>(milliseconds.count()); return t; } // ?? timestamp add(const timestamp& t, int ms) { // compute new normalized timestamp by adding given ms count to t }