Boost 具有几个转换为其他字符串格式的函数 here , 但没有转换成必要的 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;
}
即只是从 to_iso_string()
返回的值中删除数字。这看起来很粗鲁,我正在寻找一种更优雅的方式来执行这种转换。我还需要有关如何执行向后转换的建议(即从 'mm/dd/yyyy' 字符串到 boost::gregorian::date)
感谢任何帮助。提前致谢。
最佳答案
boost 具有相当多的用途 date/time 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();
}
逆向转换:
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;
}
关于c++ - 如何将 boost::gregorian::date 转换为 mm/dd/yyyy 格式,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162457/