提升:time_facet 毫秒无点

boost: time_facet milliseconds without dot

我需要创建一个带有 boost 格式的时间戳: YYYYmmDDhhMMssFFFF(F = 毫秒)。 我用

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

但是输出总是包含一个介于秒和毫秒之间的点。这是输出: “20150202140830.779716”

有没有比替换点并手动删除最后两位数字更好的方法来实现我的格式?

如果您有兴趣,前几天我在这里实现了一个自定义方面:

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

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