Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从boost::time\u duration中检索微秒_C++_Boost - Fatal编程技术网

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";