struct timespec转化为struct tm

C语言中遇到了三种时间类型:

  1. time_t
  2. struct timespec
  3. struct tm

这里总结一下它们之间的相互转化

time_t 和 struct timespec

time_t 只存储秒而struct timespec存储了纳秒,直接将秒转化即可:

time_t time = (time_t)ut_tv.tv_sec;

time_t 和 struct tm

  1. mktime 将tm转化为time_t
  2. localtime 将time_t转化为tm(本地时区)
  3. gmtime 将time_t转化为tm(UTC时区)

timespec 和 tm 可以通过time_t 间接转换

参考

  1. c - Convert timeval to time_t - Stack Overflow
  2. struct tm - C++ Reference (cplusplus.com)