用提升解析微秒

时间:2011-08-05 13:35:02

标签: datetime boost milliseconds

我正在寻找能让我解析毫秒的boost::posix_time::time_input_facet。它似乎与用于格式化微秒的"%f"

不同

因此,如果我有2011-12-11 08:29:53.123000,我希望有正确的格式来解析它,类似于"%Y-%m-%d %H:%M:%S"

1 个答案:

答案 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?