为文件名添加时间和日期

时间:2013-10-31 18:18:05

标签: c date time filenames

我正在尝试编写一个源文件,它将接收文件名/目录,然后添加当前日期&时间到文件名的末尾。到目前为止,我发现我们可以使用time()& localtime()函数。但是,我不太确定从哪里开始。

有人可以给我一些关于我可以遵循的路径的指示/步骤吗?

谢谢! :d

3 个答案:

答案 0 :(得分:2)

  • 使用time()localtime()获取当前时间
  • 使用strftime()将其格式化为您想要的格式。
  • 使用snprintf()将格式化的时间与原始文件名组合在一起。
  • 使用rename()进行实际重命名。

请注意,上述所有内容都可以在一行shell脚本中完成,因此请问自己是否真的需要在C中执行此操作,而不是将其降级为sh

答案 1 :(得分:0)

要获取日期/时间,您必须加入time.h。 然后你可以像这样使用localtime函数:

time_t t = time(NULL);
struct tm tm = *localtime(&t);

struct tm包含所需的信息。您可以按tm.tm_mday等方式访问该月的某一天。

您可以使用sprintf将所有日期信息写入如下字符串:

char datum[128];
sprintf(datum, "%d-%d-%dT%d:%d:%d", tm.tm_year+1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
printf("%s\n", datum);

会给出像

这样的东西
2013-10-31T20:26:42

您可以使用strcat

将此字符串附加到您的文件名

答案 2 :(得分:0)

此代码可以使用。

char timestr[50];
time_t now = time(NULL);
struct tm *t = localtime(&now);
strftime(timestr, sizeof(timestr)-1, "%m-%d-%Y", t);
timestr[49] = 0;
if((filename = malloc(strlen(argv[2])+strlen(timestr)+1) != NULL) {
filename[0] = '\0';
strcat(filename,argv[2];
strcat(filename,"_");
strcat(filename,timestr);
strcat(filename,".log");
}

只需根据您的代码argc更改argv [2]。

相关问题