gpt4 book ai didi

c++ - 使用 chrono 存储毫秒的可移植方式

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:25 25 4
gpt4 key购买 nike

我有一个代码如下-

int main(){
....

auto time = std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1);

....
return 0;
}

这里的变量 time 使用 typeid().name() 方法将输出作为 l,但是可以安全地假设如果我将 auto 替换为 long 类型,该变量仍会在不同机器上存储正确的毫秒数?

我需要它,因为我不能将 auto 指定为类成员中的类型,因为它们不是 constexpr 或 static ,而这可能是可能的。我的目的是将数据发送到浏览器,在那里我可以执行 var d = new Date(time) 并显示正确的时间。通信部分已经通过 json 格式弄清楚了,我只停留在如何跨不同系统正确存储它。

最佳答案

[...] is it safe to assume that if I replace auto with long type, the variable will still store the correct amount of milliseconds across different machines?

不,您需要至少 45 位的有符号整数类型long 不保证是。你应该使用 std::chrono::milliseconds::rep:

using namespace std::chrono;
milliseconds::rep time =
duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count();

另请注意,就可移植性而言,system_clock 的纪元不能保证标准为 1970 年 1 月 1 日 00:00:00 UTC(即使大多数情况下都是这样)时间)。

关于c++ - 使用 chrono 存储毫秒的可移植方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763161/

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