21

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

4

2 回答 2

38

使用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;
}
于 2011-03-25T21:50:49.740 回答
2

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

于 2011-03-25T22:56:07.337 回答