如果你有一个日期/时间字符串,你可以将它转换成一个 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();
有关可以在documentation 中完成的操作的更多信息。
更新
如果输入格式可能不同,因此您想使用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
更新2
在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?