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



对于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 年午夜以来的总时间毫秒?

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

您可以使用

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((,它应该相当容易。

最新更新