对于Windows C ++,我正在尝试像 -
这样的东西unsigned long long int Device::getCurrentUtcTimeinMiliSecond() {
time_t ltime;
time(<ime);
std::tm* newtime = gmtime(<ime);
newtime->tm_hour = 0;
newtime->tm_min = 0;
newtime->tm_sec = 0;
time_t timex = mktime(newtime);
// Want to convert tm* to total miliseconds since Midnight 1970
return (long long)timex * 1000;
}
还有其他方式还是我朝着正确的方向前进?如果是,那么如何将tm*
转换为自1970年午夜以来的总时间毫秒?
或者有人可以建议更简单的方法。
答案 0 :(得分:-1)
你可以使用clock_gettime;默认情况下,这在Windows下不可用,但有一个示例on stackoverflow
有了clock_gettime后,您可以执行以下操作:
#define MS_PER_SEC 1000
#define NS_PER_MS 1000000
timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
unsigned long long msecs = (((unsigned long long) ts.tv_sec) * MS_PER_SEC + (ts.tv_nsec / NS_PER_MS);
return msecs;
你可以稍微清理一下,但是一旦你有了clock_gettime()就应该相当容易。