Если у вас есть строка даты / времени, вы можете преобразовать ее в объект ptime следующим образом:
using boost::posix_time;
ptime t = time_from_string(datetimeString);
Имея это, вы можете легко получить time_duration, который содержит доли секунды.
time_duration td = t.time_of_day();
long fs = td.fractional_seconds();
Вы также можете получить общее количество миллисекунд или микросекунд, например:
long ms = td.total_milliseconds();
long us = td.total_microseconds();
Более подробную информацию о том, что можно сделать в документации .
ОБНОВЛЕНИЕ
Если формат ввода может быть другим, поэтому вы хотите использовать time_input_facet
, вы можете проверить time_facet.hpp
для соответствующего формата.Вот что вы, вероятно, хотите выбрать:
static const char_type fractional_seconds_format[3]; // f
static const char_type fractional_seconds_or_none_format[3]; // F
static const char_type seconds_with_fractional_seconds_format[3]; // s
UPDATE2
In time_facet.hpp
(Boost 1.45) При синтаксическом анализе я вижу следующее:
case 'f':
{
// check for decimal, check special_values if missing
if(*sitr == '.') {
++sitr;
parse_frac_type(sitr, stream_end, frac);
...
Не понимаю, почему для этого потребовалось бы что-нибудь, кроме точки между секундами и долями секунды.Может быть, вы используете другую версию Boost?