У меня есть миллисекунды с эпохи (windows / григорианский) для определенного времени в long long int, и я хотел бы преобразовать его в человеческое время, например, yy-mm-dd-hh-mm-ss-milli. (Моя платформа: Windows 7, 64bit)
К сожалению, все решения, которые я нашел до сих пор, не могут иметь дело с миллисекундной (long long int) частью.
По сути, вы должны иметь возможность взять все, что у вас есть, которое записывает форматированное время без миллисекунд, и добавить остаток от деления числа миллисекунд на 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;
Других решений пока нет …