以下是代码段
std::wstring aResult;
boost::locale::generator gen;
std::locale::global(gen(""));
std::wostringstream output;
output.imbue(std::locale());
boost::locale::date_time aTime(x);
output << boost::locale::as::date_short << aTime;
aResult = output.str();
问题是输出总是给出locale和
指定的日期格式为:: date_short
为:: date_long
为:: date_middle
始终给出相同的结果。
这可能是什么情况?
谢谢!
答案 0 :(得分:2)
它可能表示您的系统没有/不完整的区域设置定义。
E.g。这个程序:
#include <boost/locale.hpp>
#include <string>
int main()
{
std::wstring aResult;
boost::locale::generator gen;
std::locale::global(gen("C"));
std::wcout.imbue(std::locale());
boost::locale::date_time aTime;
std::wcout << std::endl << boost::locale::as::date_full << aTime;
std::wcout << std::endl << boost::locale::as::date_short << aTime;
std::wcout << std::endl << boost::locale::as::date_medium << aTime;
}
在我的Ubuntu盒子上打印:
Thursday, June 5, 2014 3:06:27 PM
6/5/14 3:06:27 PM
Jun 5, 2014 3:06:27 PM
但 Live On Coliru (在Debian上运行)会打印相同的代码:
Thu Jun 5 13:07:04 2014
Thu Jun 5 13:07:04 2014
Thu Jun 5 13:07:04 2014