首页 > 编程笔记

C语言mktime():将tm时间转换为秒

mktime() 是 C语言的一个标准库函数,定义在<time.h>头文件中。

mktime() 函数的功能是将 struct tm 结构体类型的时间信息转换成 time_t 类型的时间,也就是自 1970 年 1 月 1 日 00:00:00 以来的秒数。

mktime() 函数的原型如下:
time_t mktime(struct tm* timeptr);

参数

timeptr:指向 struct tm 结构的指针,即要转换的 tm 时间信息。

返回值

返回自 1970 年 1 月 1 日 00:00:00 到现在所经过的秒数。如果转换失败,函数返回 -1。

【实例】以下的 C语言示例演示了用 mktime() 函数将一个 tm 结构体转换为 time_t 类型,并打印结果。
#include <stdio.h>
#include <time.h>

int main() {
  struct tm time_info;
  time_t time_as_seconds;

  // 设置tm结构体为2023年8月17日08:34:56
  time_info.tm_year = 2023 - 1900; // 年份从1900年开始
  time_info.tm_mon = 8 - 1;        // 月份从0开始
  time_info.tm_mday = 17;          // 日
  time_info.tm_hour = 8;           // 小时
  time_info.tm_min = 34;           // 分钟
  time_info.tm_sec = 56;           // 秒
  time_info.tm_isdst = -1;         // 让mktime()自动检测夏令时

  // 转换为time_t类型
  time_as_seconds = mktime(&time_info);

  if (time_as_seconds != (time_t)(-1)) {
    printf("时间转换为秒数成功: %ld\n", (long)time_as_seconds);
  } else {
    printf("时间转换失败\n");
  }

  return 0;
}
输出结果为:

时间转换为秒数成功: 1692232496

推荐阅读