将当前时间作为YYYY-MM-DD-HH-MM-SS字符串

ltj*_*jax 19 c++ boost string-formatting boost-date-time

我试图以优雅的方式将当前时间作为"YYYY-MM-DD-HH-MM-SS"格式化字符串.我可以从Boost的"Date Time"库获取ISO格式的当前时间,但它有其他分隔字符串,这对我不起作用(我在文件名中使用它).当然我可以直接替换分隔字符串,但感觉有一种更好的方法可以使用日期时间的格式化选项.有这样的方式,如果有的话,我该如何使用它?

Nul*_*Set 34

使用std::strftime,它是标准的C++.

#include <cstdio>
#include <ctime>

int main ()
{
    std::time_t rawtime;
    std::tm* timeinfo;
    char buffer [80];

    std::time(&rawtime);
    timeinfo = std::localtime(&rawtime);

    std::strftime(buffer,80,"%Y-%m-%d-%H-%M-%S",timeinfo);
    std::puts(buffer);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 写入 `std::string` 并且因此不必担心缓冲区溢出的东西会很好。可以理解的是,`strftime` 应该有一个可预测的最大长度。有什么问题吗? (3认同)