对于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 年午夜以来的总时间毫秒?
或者有人可以建议更简单的方法。
您可以使用
clock_gettime; 默认情况下,这在Windows下不可用,但是有一个关于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((,它应该相当容易。