boost:没有点的time_facet毫秒

时间:2015-02-02 14:20:56

标签: c++ boost

我需要使用以下格式创建时间戳: YYYYmmDDhhMMssFFFF(F =毫秒)。 我用

facet->format("%Y%m%d%H%M%S%F");

但输出总是包括秒和毫秒之间的点。这是输出: " 20150202140830.779716"

有没有更好的方法来实现我的格式而不是替换点并手工切割最后两位数字?

1 个答案:

答案 0 :(得分:1)

如果您有兴趣,我前几天实施了自定义方面:Format a posix time with just 3 digits in fractional seconds

您可以在此处使用相同的方法:

<强> Live On Coliru

#include "time_facet.hpp"
#include <boost/date_time/posix_time/posix_time.hpp>

int main()
{
    using namespace boost::posix_time;
    ptime const date_time = microsec_clock::local_time();

    std::cout << date_time << std::endl;

    auto facet = new time_facet("%Y-%b-%d %H:%M:%S%4 %z");
    std::cout.imbue(std::locale(std::cout.getloc(), facet));
    std::cout << date_time << std::endl;
}

打印:

2015-Feb-02 22:01:00.926982
2015-Feb-02 22:01:009269