我正在寻找能让我解析毫秒的boost::posix_time::time_input_facet
。它似乎与用于格式化微秒的"%f"
因此,如果我有2011-12-11 08:29:53.123000
,我希望有正确的格式来解析它,类似于"%Y-%m-%d %H:%M:%S"
。
答案 0 :(得分:3)
如果您有日期/时间字符串,可以将其转换为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
<强> UPDATE2 强>
在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?