Вы можете построить время суток, чтобы отметить начало часа (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";
Всегда профилируйте свой код, если это важно.