【发布时间】:2012-05-07 14:53:23
【问题描述】:
我有一个像“2012-03-28T08:00:00”这样的格式化字符串。 我想获取年、月(字符串格式)、日期、小时、分钟、秒和日(字符串格式)。 任何人都可以建议我在 boost 中做到这一点的最简单方法。
谢谢
【问题讨论】:
-
您的字符串是否始终采用您在问题中询问的 ISO 格式,或者您是否需要它来接受任何格式的字符串?
我有一个像“2012-03-28T08: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;
【讨论】:
不使用分面;
ptime dateTime = boost::date_time::parse_delimited_time<ptime>(string, 'T');
from*_string 这两个函数对转换的格式有限制。
time_from_string(s)。from_iso_string(s)。在 boost 中往返 ISO 8601 日期/时间;
std::string date = to_iso_extended_string(dateTime);
【讨论】: