我有一个自epoch(windows / gregorian)以来的毫秒,在long long int中的特定时间,并希望将其转换为人类时间,例如yy-mm-dd-hh-mm-ss-milli。 (我的平台:Windows 7,64bit)
不幸的是,到目前为止我找到的所有解决方案都无法处理毫秒(long long int)部分。
基本上,你应该能够把你所拥有的任何东西写成没有毫秒的格式化时间,并将剩余的分数除以毫秒数。这应该有效,因为闰时总是一个整数秒。
假设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;