struct stat 定义:
struct stat
{
dev_t st_dev; /* ID of device containing file -文件所在设备的ID*/
ino_t st_ino; /* inode number -inode节点号*/
mode_t st_mode; /* 文件的类型和存取的权限*/
nlink_t st_nlink; /* number of hard links -链向此文件的连接数(硬连接)*/
uid_t st_uid; /* user ID of owner -user id*/
gid_t st_gid; /* group ID of owner - group id*/
dev_t st_rdev; /* device ID (if special file) -设备号,针对设备文件*/
off_t st_size; /* total size, in bytes -文件大小,字节为单位*/
blksize_t st_blksize; /* blocksize for filesystem I/O -系统块的大小*/
blkcnt_t st_blocks; /* number of blocks allocated -文件所占块数*/
time_t st_atime; /* time of last access -最近存取时间*/
time_t st_mtime; /* time of last modification -最近修改时间*/
time_t st_ctime; /* time of last status change -最后权限修改时间 */
};
st_atime、st_mtime和st_ctime均表示自1970年1月1日00:00:00(国际标准时间)以来到时间记录所要表达的时间所经过的秒数,这种时间值称为日历时间。
如何转化成为人类可以识别的时间呢?就用一下这个函数:
#include <time.h>
struct tm *localtime(const time_t *timer);
这个函数的功能就是把从1970年1月1日00:00:00到timer的秒数时间转换为可以人类可识别的时间。
返回值struct tm的结构为:
struct tm {
int tm_sec; /* 秒,范围从0到59 */
int tm_min; /* 分,范围从0到59 */
int tm_hour; /* 小时,范围从0到23 */
int tm_mday; /* 月份的第几天,范围从1到31 */
int tm_mon; /* 月份,范围从0到11 */
int tm_year; /* 自1900起的年数 */
int tm_wday; /* 一周中的第几天,范围从0到6*/
int tm_yday; /* 一年中的第几天,范围从0到365*/
int tm_isdst; /* 夏令时 */
};
函数的用法:
struct tm* t = localtime(&file_message->st_mtime); //struct stat* file_message
printf("%2d月 %2d %02d:%02d ", t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min);
注意:tm_mon,tm_wday,tm_yday均要加1。