2012-02-06 48 views
0

我有升压::了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(); 

回答

2

如果您想要使用非默认的格式,你需要问它:http://www.boost.org/doc/html/date_time/date_time_io.html

+1

它的工作原理: '的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

+0

@PetervanderSanden:你也可以使用typedef'boost :: posix_time :: time_facet'来缩短它可能更健壮)。 – foraidt 2012-10-18 10:04:35

相关问题