我有升压::了posix_time问题:固定精度的boost ::了posix_time ::的ptime
下面的代码:
boost::posix_time::ptime now(boost::posix_time::microsec_clock::local_time());
std::wstringstream record;
record << now.time_of_day();
记录显示:例如。 “08:15:30.093750”。它是正确的。正是我期望的。 但有时我看到奇怪的,例如。 “08:15:32”而不是“08:15:32.000000”。 如何获得“08:15:32.000000”?
在此先感谢。
解决方案:
std::wstringstream record;
boost::date_time::time_facet<boost::posix_time::ptime, wchar_t>* timeFacet(new boost::date_time::time_facet<boost::posix_time::ptime, wchar_t>(L"%f"));
record.imbue(std::locale(record.getloc(), timeFacet));
record << now.time_of_day();
它的工作原理: '的std :: wstringstream记录;'' 的boost :: date_time的:: time_facet <提振::了posix_time: :ptime,wchar_t> * timeFacet(new boost :: date_time :: time_facet(L“%f”));' 'record.imbue(std :: locale(record。 getloc(),timeFacet));' 'record << now.time_of_day();' ' –
2012-02-06 10:15:01
@PetervanderSanden:你也可以使用typedef'boost :: posix_time :: time_facet'来缩短它可能更健壮)。 – foraidt 2012-10-18 10:04:35