Boost有几个函数转换为此处描述的其他字符串格式,但没有转换为必要的mm/dd/yyyy格式.目前我正在通过以下方式进行:
std::string dateAsMMDDYYYY( const boost::gregorian::date& date )
{
std::string yyyymmdd = boost::gregorian::to_iso_string( date );
std::string ret = yyyymmdd.substr(4,2) + "/" + yyyymmdd.substr(6,2) + "/" + yyyymmdd.substr(0,4);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
即只是从返回的值中删除数字to_iso_string().这看起来很粗鲁,我正在寻找一种更优雅的方式来执行此转换.另外我需要一个关于如何执行向后转换的建议(即从'mm/dd/yyyy'字符串到boost :: gregorian :: date)
任何帮助表示赞赏.提前致谢.
Cub*_*bbi 11
boost具有相当多功能的日期/时间IO设施
const std::locale fmt(std::locale::classic(),
new boost::gregorian::date_facet("%m/%d/%Y"));
std::string dateAsMMDDYYYY( const boost::gregorian::date& date )
{
std::ostringstream os;
os.imbue(fmt);
os << date;
return os.str();
}
Run Code Online (Sandbox Code Playgroud)
逆转换:
const std::locale fmt2(std::locale::classic(),
new boost::gregorian::date_input_facet("%m/%d/%Y"));
boost::gregorian::date MMDDYYYYasDate( const std::string& str)
{
std::istringstream is(str);
is.imbue(fmt2);
boost::gregorian::date date;
is >> date;
return date;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9057 次 |
| 最近记录: |