gpt4 book ai didi

c++ - gmtime 给我一些本地时间?

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:23 24 4
gpt4 key购买 nike

我在多线程环境中打印事件,控制台是所有线程共享的静态互斥锁。

问题是随机发生的每一百或一千个事件,我得到的时间是本地时间而不是 UTC。

我只在 Linux 机器(使用 g++ 构建)中看到过这个错误,但在 Windows(构建 VC++)中没有看到。我不知道从哪里开始,知道吗?

void  Publish(std::string source, std::string topic, std::string msg) NOEXCEPT {
console.lock();
std::time_t now = std::chrono::high_resolution_clock::to_time_t(*localTime);

char buf[50];
strftime(buf, sizeof (buf), "%Y-%m-%dT%H:%M:%S+00:00", gmtime(&now));

cout << buf << " " << source << " " << topic << " " << msg << endl;
cout.flush();
console.unlock();
}

最佳答案

struct tm * gmtime (const time_t * timer);

将 time_t 转换为 tm 作为 UTC 时间。此调用使用计时器指向的值填充 tm 结构,其中包含表示相应时间的值,表示为 UTC 时间(即 GMT 时区的时间)。

这一定能正常工作。但是,对此不确定:

 std::time_t now = std::chrono::high_resolution_clock::to_time_t(*localTime);

你的 *localtime 在多线程情况下是否准确给出当前时间?是共享变量吗?您可以改用以下内容吗:

std::time_t now = time(0);

关于c++ - gmtime 给我一些本地时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26254634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com