我需要以这种格式生成时间戳yyyymmdd。基本上我想创建一个具有当前日期扩展名的文件名。 (例如:log.20100817)
答案 0 :(得分:18)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char date[9];
time_t t = time(0);
struct tm *tm;
tm = gmtime(&t);
strftime(date, sizeof(date), "%Y%m%d", tm);
printf("log.%s\n", date);
return EXIT_SUCCESS;
}
答案 1 :(得分:1)
另一种选择:Boost.Date_Time。
答案 2 :(得分:0)
C ++ 11答案:
std::time_t t = std::time(nullptr);
std::tm tm = *std::localtime(&t);
std::ostringstream oss;
oss << std::put_time( &tm, "%Y-%m-%d" );
std::string timestamp( oss.str() );
需要标头chrono
(还有sstream
和iomanip
,而put_time
需要标头)。
所有格式代码均在std::put_time
页上进行了详细说明。
例如,要添加小时和分钟,您可以执行以下操作:
oss << std::put_time(&tm, "%Y-%m-%d_%H:%M");
您也可以使用auto
:
auto t = std::time(nullptr);
auto tm = *std::localtime(&t);
std::ostringstream oss;
oss << std::put_time( &tm, "%Y-%m-%d" );
std::string timestamp( oss.str() );