2012-02-06 73 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

相關問題