![](/img/trans.png)
[英]How to find the time difference in milliseconds between an epoch timestamp and std::chrono::system_clock::now
[英]std::chrono::system_clock + now() to milliseconds and back different behavior
我對找到一種將毫秒轉換為std::chrono::system_time::time_point
的便攜方法感到有些困惑。 我看起來像代碼:
https://godbolt.org/z/e7Pr3oxMT
#include <chrono>
#include <iostream>
int main ()
{
auto now = std::chrono::system_clock::now();
auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
auto value = now_ms.time_since_epoch();
long duration = value.count();
std::cout << duration << std::endl;
std::chrono::milliseconds dur(duration);
std::chrono::time_point<std::chrono::system_clock> dt(dur);
if (dt != now_ms)
std::cout << "Failure." << std::endl;
else
std::cout << "Success." << std::endl;
return 0;
}
應該在 win32 和 linux 上工作相同。 但不幸的是,在 windows (msvc) 上,我遇到了 output Failure
。 請幫助理解什么是錯的?
問題大概是
long duration = value.count();
long
類型不一定是 64 位。 除了char
之外,標准沒有定義 integer 類型的確切大小。 例如,即使在 x64 構建中,Visual Studio 也長期使用 32 位。
不管怎樣,試試
uint64_t duration = value.count();
在您的代碼中或只是
auto duration = value.count();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.