我需要编写名称中包含当前日期的文件。 目前这是我尝试过的:
time_t t = time(0);
struct tm * now = localtime(&t);
string date=now->tm_mday+'/'+(now->tm_mon+1)+'/'+(now->tm_year+1900);
我希望保留这种获取日期的方法,就像我之前在我的程序中使用它一样。
答案 0 :(得分:5)
我会使用std::put_time
,如下所示:
time_t t = time(0);
struct tm * now = localtime(&t);
your_file << std::put_time(now, "%d/%m/%Y");
如果您的意思是需要在新文件的名称中包含日期,请写入字符串流,并使用your_stream.str()
获取包含该值的字符串。
如果(虽然它让我觉得不太可能)你发现这会产生过多的开销,你可以使用strftime
代替。它将日期/时间直接写入C风格的字符串:
char buffer[64];
strftime(buffer, sizeof(buffer), "%d/%m/%Y", now);
答案 1 :(得分:2)
我经常使用std::strftime这样:
// use strftime to format time_t into a "date time"
std::string get_date(std::time_t timer)
{
char buf[sizeof("02/05/2015")]; // big enough for 02/05/2015\0
std::tm tp = *std::localtime(&timer); // not thread safe
return {buf, std::strftime(buf, sizeof(buf), "%d/%m/%Y", &tp)};
}
int main()
{
std::cout << get_date(std::time(0)) << '\n';
}
<强>输出:强>
02/05/2016