在后续调用中获取相同的时间戳值

Getting same value for timestamp on consequent calls

本文关键字:时间戳 获取 调用      更新时间:2023-10-16

每当我调用这个函数时,我都试图在float中获得高达毫秒的unix时间戳,这可能是每秒30次。下面函数返回的时间戳总是相同的,但是,当我将其打印到std::cerr时,我会得到不同的值。每次调用函数时,我都会创建变量,所以我不确定我在这里做错了什么。任何帮助都将不胜感激。

    float GetUnixTimestamps()
    {
        float milliseconds_since_epoch =
        std::chrono::duration_cast<std::chrono::milliseconds>
        (std::chrono::system_clock::now().time_since_epoch()).count();
    std::cerr << milliseconds_since_epoch << std::endl;
    return milliseconds_since_epoch;
    }

编辑:根据建议我使用的是C++11,需要在Windows x64、x86和Linux(主要是Ubuntu和CentOS(上编译。我想在unix中获取当前时间。我已经阅读了S.O的帖子19555121和16177295,但时间戳的值仍然保持不变。

float的精度不足以满足您的需要。自1970-01-01以来的当前毫秒数约为1478020169728。在此之后的float中的下一个可表示值是1478020300800。大约131秒(2分钟(后。

double在这里就可以了。