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

时间:2011-03-25 21:48:32

标签: c++ boost string-formatting boost-date-time

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

2 个答案:

答案 0 :(得分:33)

使用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;
}

答案 1 :(得分:2)

答案取决于你的意思。如果您尝试输出格式化的时间字符串,请使用strftime()。如果您尝试将文本字符串解析为二进制格式,请使用strptime()。