datetime — Миллисекунды с эпохи до даты формируют переполнение стека

У меня есть миллисекунды с эпохи (windows / григорианский) для определенного времени в long long int, и я хотел бы преобразовать его в человеческое время, например, yy-mm-dd-hh-mm-ss-milli. (Моя платформа: Windows 7, 64bit)

К сожалению, все решения, которые я нашел до сих пор, не могут иметь дело с миллисекундной (long long int) частью.

1

Решение

По сути, вы должны иметь возможность взять все, что у вас есть, которое записывает форматированное время без миллисекунд, и добавить остаток от деления числа миллисекунд на 1000. Это должно работать, потому что время скачка всегда равно целому числу секунд ,

Предполагая C ++ 11, вы можете попробовать это:

#include <chrono>
#include <iomanip>

using namespace std;
using namespace chrono;

long long int milliSecondsSinceEpoch = ... // this is your starting point
const auto durationSinceEpoch = std::chrono::milliseconds(milliSecondsSinceEpoch);
const time_point<system_clock> tp_after_duration(durationSinceEpoch);
time_t time_after_duration = system_clock::to_time_t(tp_after_duration);

std::tm* formattedTime = std::localtime(&time_after_duration);

long long int milliseconds_remainder = milliSecondsSinceEpoch % 1000;
cout <<put_time(std::localtime(&time_after_duration), "%y-%m-%d-%H-%M-%S-") << milliseconds_remainder << endl;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]