【发布时间】:2017-02-12 19:12:03
【问题描述】:
我正在为跨平台 32 位嵌入式系统(windows 和 linux)开发一个 c++ 应用程序。对于一个需要的功能,我需要以毫秒为单位计算时间差。首先,纪元时间戳为 32 位系统提供的最大精度是一秒。我遇到的大多数相关答案要么与 64 位相关,例如使用 std::clock 或 std::chrono,例如:
std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
或系统特定使用
#include <sys/time.h>
或 Windows 上的 GetSystemTime 函数。我还检查了与 poco 相关的时间函数,但它们也基于使用 64 位变量。这可以使用现有的标准或外部 c++ 库来完成,还是我应该采用不同的方法?
【问题讨论】:
-
您需要以毫秒为单位的纪元时间还是需要以毫秒为单位的两个时间点之间的差异?
-
@RustyX 我需要以毫秒为单位的两个时间点之间的差异,但我假设如果我可以在不同的时间点以毫秒为单位获得纪元时间也可以完成这项工作,除非我错过了什么。
-
没有标准的可移植方式来获取以毫秒为单位的纪元时间。
chrono::system_clock的精度通常为 1 秒,chrono::high_resolution_clock不是从纪元开始的。 -
@RustyX 好的,那么两个时间点之间的简单差异(以毫秒为单位)就足够了。
标签: c++ timestamp 32-bit milliseconds