C++ 从boost::time\u duration中检索微秒
我正在使用C++ 从boost::time\u duration中检索微秒,c++,boost,C++,Boost,我正在使用boost::posix_time实现时钟 date d(2000,Jan,20); ptime start(d); time_iterator titr(start,microseconds(15)); //increment by 15 microseconds 现在,当我想要检索微秒时,我会使用++time\u迭代器,所以它会将时钟增加该持续时间。在这个增量之后,我想检索过去一小时以来的微秒,而不是总微秒。一种方法是将其转换为字符串并从字符串中提取数据。但是有更好的方法吗?您可
boost::posix_time
实现时钟
date d(2000,Jan,20);
ptime start(d);
time_iterator titr(start,microseconds(15)); //increment by 15 microseconds
现在,当我想要检索微秒时,我会使用
++time\u迭代器
,所以它会将时钟增加该持续时间。在这个增量之后,我想检索过去一小时以来的微秒,而不是总微秒。一种方法是将其转换为字符串并从字符串中提取数据。但是有更好的方法吗?您可以构建一天中的某个时间来标记一小时的开始(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_迭代器titr(开始,/*micro*/秒(15));*titrdate(),time_duration(titr->time_of u day().hours(),0,0));
std::cout“过去一小时后的微秒数”本身不是一件事。但是,如果您以微秒为单位获取当前unix时间戳并对其应用模数运算符Tusec%3600000000LL
,您将获得所需的数量(无闰秒调整等)。
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";