7

我有一个像“2012-03-28T08:00:00”这样的格式化字符串。我想获取年、月(字符串格式)、日期、小时、分钟、秒和日(字符串格式)。任何人都可以建议我最简单的方法来提升它。

谢谢

4

2 回答 2

11

如果现有的 from_string() 方法不适合您的需要,那么您可以使用时间输入方面,它允许您自定义解析字符串的格式。

在您的情况下,您可以使用 ISO 扩展格式字符串,以便您可以使用以下代码来解析您的字符串:

    boost::posix_time::time_input_facet *tif = new boost::posix_time::time_input_facet;
    tif->set_iso_extended_format();
    std::istringstream iss("2012-03-28T08:00:00");
    iss.imbue(std::locale(std::locale::classic(), tif));
    iss >> abs_time;
    std::cout << abs_time << std::endl;
于 2012-05-08T08:39:33.100 回答
9

不使用刻面;

ptime dateTime = boost::date_time::parse_delimited_time<ptime>(string, 'T');

这两个from*_string函数对转换的格式有限制。

  • 不接受 'T': time_from_string(s)
  • 不接受 '-': from_iso_string(s)

在 boost 中往返 ISO 8601 日期/时间;

std::string date = to_iso_extended_string(dateTime);

于 2014-01-14T13:29:30.583 回答