C++ boost:没有点的时间为毫秒

C++ boost:没有点的时间为毫秒,c++,boost,C++,Boost,我需要创建一个格式为boost的时间戳: yyyymmddhhmmssfff(F=毫秒)。 我用 但是输出总是包含一个介于秒和毫秒之间的点。这是输出: “20150202140830.779716” 有没有更好的方法来实现我的格式,而不是用手替换圆点并剪切最后两个数字?如果您感兴趣,我前几天在这里实现了一个自定义刻面: 您可以在此处使用相同的方法: #include "time_facet.hpp" #include <boost/date_time/posix_time/posix_t

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

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


有没有更好的方法来实现我的格式,而不是用手替换圆点并剪切最后两个数字?

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

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

#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;
}

修正了我的答案。我错过了一个事实,最初你想要4个数字
#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