How to convert std::chrono::time_point to calendar datetime string with fractional seconds?

后端 未结 7 2072
生来不讨喜
生来不讨喜 2020-11-27 02:50

How to convert std::chrono::time_point to calendar datetime string with fractional seconds?

For example:

\"10-10-2012 12:38:40.123456\"         


        
7条回答
  •  栀梦
    栀梦 (楼主)
    2020-11-27 03:31

    If you are to format a system_clock::time_point in the format of numpy datetime64, you could use:

    std::string format_time_point(system_clock::time_point point)
    {
        static_assert(system_clock::time_point::period::den == 1000000000 && system_clock::time_point::period::num == 1);
        std::string out(29, '0');
        char* buf = &out[0];
        std::time_t now_c = system_clock::to_time_t(point);
        std::strftime(buf, 21, "%Y-%m-%dT%H:%M:%S.", std::localtime(&now_c));
        sprintf(buf+20, "%09ld", point.time_since_epoch().count() % 1000000000);
        return out;
    }
    

    sample output: 2019-11-19T17:59:58.425802666

提交回复
热议问题