2013-05-28 67 views
-2

如何将字符串与模板"%d.%m.%Y %H:%M:%S"(例如,28.05.2013 17:42:00)转换为boost::posix_time::ptime或类似的东西?如何从C++中的字符串解析日期/时间

以下是我的非工作代码。

boost::posix_time::ptime stringToDateTime(const std::string &text) { 
    const std::locale fct 
    ( std::locale::classic() 
    , new boost::gregorian::date_input_facet("%d.%m.%Y %H:%M:%S") 
); 
    std::istringstream is(text); 
    is.imbue(fct); 
    boost::posix_time::ptime date; 
    is >> date; 
    return date; 
} 

回答

0
boost::posix_time::ptime stringToDateTime(const std::string &text) { 
    const std::locale fct 
    ( std::locale::classic() 
    , new boost::posix_time::time_input_facet("%d.%m.%Y %H:%M:%S") 
);   //^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - that was an error 
    std::istringstream is(text); 
    is.imbue(fct); 
    boost::posix_time::ptime date; 
    is >> date; 
    return date; 
} 
0

有一种丑陋的方式我不接受

boost::posix_time::ptime stringToDateTime(const std::string &text) { 
    return boost::posix_time::time_from_string 
    ( text.substr(6, 4) // year 
    + "-" 
    + text.substr(3, 2) // month 
    + "-" 
    + text.substr(0, 2) // day 
    + text.substr(10, 9) // hour,min,sec 
); 
} 
相关问题