Boa*_*rdy 13 c linux timestamp last-modified
我正在开发一个C程序,我需要获取文件的最后修改时间.程序所做的是一个函数循环遍历目录中的每个文件,当找到特定文件时,它调用另一个函数来检查文件的最后修改时间.
在该目录下有一个mylog.txt.1,mylog.txt.2和mylog.txt.3等当我使用ll命令我可以看到,列出目录在linux mylog.txt.1和mylog.txt.2进行了修改,在5月4日,并mylog.txt.3于5月3日进行了修改.
但是当程序检查这些文件时,它总是返回第3个.下面是我正在使用的代码.
void getFileCreationTime(char *filePath)
{
struct stat attrib;
stat(filePath, &attrib);
char date[10];
strftime(date, 10, "%d-%m-%y", gmtime(&(attrib.st_ctime)));
printf("The file %s was last modified at %s\n", filePath, date);
date[0] = 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有不同的变化st_ctime,即st_mtime,st_atime但他们都返回第3可能.
感谢您的任何帮助,您可以提供.
qwe*_*rtz 17
这对我很好:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
void getFileCreationTime(char *path) {
struct stat attr;
stat(path, &attr);
printf("Last modified time: %s", ctime(&attr.st_mtime));
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*esh 12
这是时区重要的案例之一.你得到gmtime了st_mtime.你应该使用localtimeviz.
strftime(date, 20, "%d-%m-%y", localtime(&(attrib.st_ctime)));
Run Code Online (Sandbox Code Playgroud)
这是因为ls使用您的时区信息,当您gmtime作为显示的一部分使用时,它故意省略任何时区信息.
| 归档时间: |
|
| 查看次数: |
49054 次 |
| 最近记录: |