C++ 如何从格式化字符串获取boost::posix_time::ptime

C++ 如何从格式化字符串获取boost::posix_time::ptime,c++,boost,C++,Boost,我有一个格式化的字符串,如“2012-03-28 08:00:00”。 我想得到年、月(字符串格式)、日期、小时、分钟、秒和天(字符串格式)。 有谁能给我推荐一下在boost中最简单的方法吗 谢谢如果现有的from_string()方法不适合您的需要,那么您可以使用时间输入方面,允许您自定义解析字符串的格式 在您的情况下,您可以使用ISO扩展格式字符串,因此可以使用以下代码来解析字符串: boost::posix_time::time_input_facet *tif = new boo

我有一个格式化的字符串,如“2012-03-28 08:00:00”。 我想得到年、月(字符串格式)、日期、小时、分钟、秒和天(字符串格式)。 有谁能给我推荐一下在boost中最简单的方法吗


谢谢

如果现有的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;
boost::posix_time::time_input_facet*tif=新的boost::posix_time::time_input_facet;
tif->设置iso扩展格式();
istringstream国际空间站(“2012-03-28:08:00:00”);
imbue(std::locale(std::locale::classic(),tif));
国际空间站>>绝对时间;
std::cout不使用刻面

ptime-dateTime=boost::date\u-time::parse\u-delimited\u-time(字符串“T”)

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

  • 不接受字符串中的“T”:
    时间
  • 不接受来自iso字符串的“-”:
boost中的往返ISO 8601日期/时间


std::string date=to_iso_extended_string(dateTime)

您的字符串是否始终采用您在问题中询问的ISO格式,或者您是否需要它来接受任何格式的字符串?很好,但“新”很难看。可以这样构造方面:“boost::posix_time::time_input_facet tif(1)”。论点“1”意味着所有权和生命周期没有有趣的事情。。。