gpt4 book ai didi

c++ - 从 boost::time_duration 中检索微秒

转载 作者:行者123 更新时间:2023-11-30 04:55:08 26 4
gpt4 key购买 nike

我正在使用 boost::posix_time 来实现时钟。

date d(2000,Jan,20);
ptime start(d);
time_iterator titr(start,microseconds(15)); //increment by 15 microseconds

现在,当我想要检索微秒时,我会执行 ++time_iterator,因此它会按该持续时间递增时钟。在此增量之后,我想检索自过去一小时以来的微秒而不是总微秒。一种方法是将其转换为字符串 从字符串中提取数据。但是有更好的方法吗?

最佳答案

您可以构造一个时间来标记时间的开始 (soh),并从那里计算差异:

for (time_iterator titr(start, /*micro*/seconds(15)); *titr < end; ++titr) {
ptime soh(titr->date(), time_duration(titr->time_of_day().hours(), 0, 0));

std::cout << *titr << "\t" << soh << " elapsed: " << (*titr-soh).total_microseconds() << "\n";
}

它可以更有效率,意识到日期并不重要(时间与日期对齐):

for (time_iterator titr(start, /*micro*/seconds(15)); *titr < end; ++titr) {
std::cout << *titr << "\t elapsed: " << (titr->time_of_day()-hours(titr->time_of_day().hours())).total_microseconds() << "\n";
}

也许采用总微秒数并进行取模技巧会更有效:

std::cout << *titr << "\t elapsed: " << (titr->time_of_day().total_microseconds() % hours(1).total_microseconds()) << "\n";

如果重要,请始终分析您的代码。

关于c++ - 从 boost::time_duration 中检索微秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53216402/

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