获取Linux中文件的最后修改时间
我正在使用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日进行了修改。
但是,当程序检查这些文件中的每个文件时,它总是会返回3rd may。下面是我正在使用的代码。
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;
}
我尝试了的所有不同变体st_ctime
,即st_mtime
和,st_atime
但是它们都返回5月3日。
感谢您的任何帮助,您可以提供。
回答:
这是时区很重要的情况之一。你得到gmtime
的st_mtime
。您应该改用localtime
viz。
strftime(date, 20, "%d-%m-%y", localtime(&(attrib.st_ctime)));
这是因为ls
使用了您的时区信息,并且当您将其gmtime
用作显示的一部分时,它故意省略了任何时区信息。
以上是 获取Linux中文件的最后修改时间 的全部内容, 来源链接: utcz.com/qa/431342.html