我正在使用stat来获取文件的最后修改时间,但是我想在总时间上增加几秒钟。
if (stat(file_path, &st) == 0)
{
char estimate_time[50];
strftime(estimate_time, 50, "\'%F %T\'", localtime(&st.st_mtime)
}
因此,此代码可以很好地获取文件的最后修改时间,但是我只想在总时间上增加几秒钟。有没有办法在几秒钟内获得“ st_mtime”,以便我可以简单地添加到该值,然后使用strftime转换为格式化输出?
谢谢
最佳答案
要向struct tm
添加几秒钟的时间,只需将其添加到tm_sec
成员,然后调用mktime()
即可标准化该结构。
struct stat st;
struct tm *tm = localtime(&st.st_mtime);
if (tm == NULL) Handle_Error();
tm->tm_sec += offset;
time_t time_new = mktime(tm); // adjust fields.
if (time_new == (time_t) -1) Handle_Error();
strftime(estimate_time, sizeof estimate_time, "\'%F %T\'", tm);
根据
[stat]
标记,OP在POSIX系统上,要求time_t
在几秒钟之内,因此POSIX代码可能会添加到st.st_mtime
中。 time_t new_time = st.st_mtime + offset;
struct tm *tm = localtime(&new_time);
if (tm == NULL) Handle_Error();
strftime(estimate_time, sizeof estimate_time, "\'%F %T\'", tm);
关于c - 向stat()添加几秒钟的偏移量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43856483/