修正了boost::posix_time::ptime的精度

Fixed precision for boost::posix_time::ptime

本文关键字:time ptime 精度 posix boost      更新时间:2023-10-16

我对boost::posix_time:有问题

此处代码:

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();

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

使用小时、分钟和秒访问器,并根据需要格式化输出。