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