android getduration 毫秒,,使用C ++和Boos获取以毫秒为单位的当前时间

使用C ++和Boos获取以毫秒为单位的当前时间

在我的线程中(使用boost :: thread),我需要以毫秒或更短的时间获取当前时间,并转换为ms:

实际上,在这里阅读我发现了这一点:

tick = boost::posix_time::second_clock::local_time();

now = boost::posix_time::second_clock::local_time();

似乎可以正常工作,但是在我需要拥有现在毫秒的长值之后...

我该怎么做?

4个解决方案

68 votes

您可以使用boost::posix_time::time_duration来获取时间范围。 例如这样

boost::posix_time::time_duration diff = tick - now;

diff.total_milliseconds();

为了获得更高的分辨率,您可以更改使用的时钟。 例如,例如boost::posix_time::microsec_clock,尽管这可能取决于操作系统。 例如,在Windows上,boost::posix_time::microsecond_clock具有毫秒级的分辨率,而不是微秒。

一个稍微依赖于硬件的示例。

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,因为时钟的分辨率更高。 希望对您有所帮助。

mkaes answered 2020-01-25T16:15:30Z

13 votes

如果您指的是自纪元以来的毫秒数,则可以

ptime time_t_epoch(date(1970,1,1));

ptime now = microsec_clock::local_time();

time_duration diff = now - time_t_epoch;

x = diff.total_milliseconds();

但是,您所追求的还不是很清楚。

看一下Boost Date时间的DateTime文档中的示例

Brian O'Kennedy answered 2020-01-25T16:15:59Z

8 votes

// Get current date/time in milliseconds.

#include "boost/date_time/posix_time/posix_time.hpp"

namespace pt = boost::posix_time;

int main()

{

pt::ptime current_date_microseconds = pt::microsec_clock::local_time();

long milliseconds = current_date_microseconds.time_of_day().total_milliseconds();

pt::time_duration current_time_milliseconds = pt::milliseconds(milliseconds);

pt::ptime current_date_milliseconds(current_date_microseconds.date(),

current_time_milliseconds);

std::cout << "Microseconds: " << current_date_microseconds

<< " Milliseconds: " << current_date_milliseconds << std::endl;

// Microseconds: 2013-Jul-12 13:37:51.699548 Milliseconds: 2013-Jul-12 13:37:51.699000

}

Macbeth's Enigma answered 2020-01-25T16:16:15Z

-8 votes

尝试以下操作:如上所述导入标题。.仅给出秒和毫秒。 如果您需要解释代码,请阅读此链接。

#include

#include

void main()

{

SYSTEMTIME st;

SYSTEMTIME lt;

GetSystemTime(&st);

// GetLocalTime(&lt);

printf("The system time is: %02d:%03d\n", st.wSecond, st.wMilliseconds);

// printf("The local time is: %02d:%03d\n", lt.wSecond, lt.wMilliseconds);

}

user1476945 answered 2020-01-25T16:16:35Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值