我正在使用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/

10-11 01:43