Get current time in milliseconds using C++ and Boost(使用 C++ 和 Boost 以毫秒为单位获取当前时间)
问题描述
在我的线程中(使用 boost::thread)我需要以毫秒或更少的时间检索当前时间并转换为毫秒:
In my thread (using boost::thread) I need to retrieve the current time in ms or less and to convert into ms:
实际上,在这里阅读我发现了这一点:
Actually, reading here I've found this:
tick = boost::posix_time::second_clock::local_time();
now = boost::posix_time::second_clock::local_time();
并且似乎有效,但是在我需要现在的毫秒值之后...
And seems to work, but after I need to have a long value of the milliseconds of the now...
我该怎么做?
推荐答案
您可以使用 boost::posix_time::time_duration
获取时间范围.例如像这样
You can use boost::posix_time::time_duration
to get the time range. E.g like this
boost::posix_time::time_duration diff = tick - now;
diff.total_milliseconds();
为了获得更高的分辨率,您可以更改正在使用的时钟.例如对于 boost::posix_time::microsec_clock
,尽管这可能取决于操作系统.例如,在 Windows 上,boost::posix_time::microsecond_clock
具有毫秒分辨率,而不是微秒.
And to get a higher resolution you can change the clock you are using. For example to the boost::posix_time::microsec_clock
, though this can be OS dependent. On Windows, for example, boost::posix_time::microsecond_clock
has milisecond resolution, not microsecond.
一个有点依赖硬件的例子.
An example which is a little dependent on the hardware.
int main(int argc, char* argv[])
{
boost::posix_time::ptime t1 = boost::posix_time::second_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime t2 = boost::posix_time::second_clock::local_time();
boost::posix_time::time_duration diff = t2 - t1;
std::cout << diff.total_milliseconds() << std::endl;
boost::posix_time::ptime mst1 = boost::posix_time::microsec_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime mst2 = boost::posix_time::microsec_clock::local_time();
boost::posix_time::time_duration msdiff = mst2 - mst1;
std::cout << msdiff.total_milliseconds() << std::endl;
return 0;
}
在我的 win7 机器上.第一个输出是 0 或 1000.第二个分辨率.第二个几乎总是 500,因为时钟的分辨率更高.我希望能有所帮助.
On my win7 machine. The first out is either 0 or 1000. Second resolution. The second one is nearly always 500, because of the higher resolution of the clock. I hope that help a little.
这篇关于使用 C++ 和 Boost 以毫秒为单位获取当前时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 C++ 和 Boost 以毫秒为单位获取当前时间
基础教程推荐
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01