如何从格式化的字符串中获取boost :: posix_time :: ptime

Dev*_*Dev 7 c++ boost

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

谢谢

tin*_*man 10

如果现有的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;
Run Code Online (Sandbox Code Playgroud)

  • 不错,但"新"很难看.人们可以绕过它来构建这样的方面:"boost :: posix_time :: time_input_facet tif(1)".论证"1"意味着没有所有权和生命期的有趣业务...... (2认同)

小智 9

不使用方面;

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

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

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

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

std::string date = to_iso_extended_string(dateTime);