如何在C ++中以毫秒为单位获取今天的UTC午夜时间?

时间:2017-03-24 03:37:23

标签: c++ windows

对于Windows C ++,我正在尝试像 -

这样的东西
unsigned long long int Device::getCurrentUtcTimeinMiliSecond() {
    time_t ltime;
    time(&ltime);
    std::tm* newtime = gmtime(&ltime);
    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年午夜以来的总时间毫秒?

或者有人可以建议更简单的方法。

1 个答案:

答案 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()就应该相当容易。