📜  C C++中的gmtime()函数(1)

📅  最后修改于: 2023-12-03 15:29:41.467000             🧑  作者: Mango

C/C++中的gmtime()函数

介绍

gmtime()函数是C/C++标准库time.h头文件中的函数,用于将日历时间(time_t类型)转换为对应的格林威治标准时间(GMT)。

struct tm *gmtime(const time_t *timep);

上面的函数原型中,timep是一个指向时间类型time_t的指针,而返回值是一个指向结构体tm的指针。

结构体tm

tm结构体用于存储时间和日期的信息,包括时、分、秒、日、月、年以及星期等等。结构如下:

struct tm {
  int tm_sec;     /* 秒 (0-60) */
  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,星期日为 0) */
  int tm_yday;    /* 这一年的第几天 (0-365,从一月一日算起) */
  int tm_isdst;   /* 夏令时标识符 */
};
使用示例

下面是一个简单的使用示例,输出当前时间:

#include <stdio.h>
#include <time.h>

int main() {
    time_t now = time(0);    // 获取当前时间
    struct tm *gmt = gmtime(&now);    // 将时间转换为GMT时间

    printf("Current GMT time: %d-%02d-%02d %02d:%02d:%02d\n",
        gmt->tm_year+1900, gmt->tm_mon+1, gmt->tm_mday,
        gmt->tm_hour, gmt->tm_min, gmt->tm_sec);

    return 0;
}

输出结果:

Current GMT time: 2022-05-06 09:45:12
注意事项
  1. 由于返回的是指针,因此需要进行非空判断处理。
  2. 由于tm结构体中年份存储的是自1900年起的年份,因此在输出时需要加上1900。
  3. 返回的结构体中月份从0开始而不是1开始,因此在输出时需要加上1。
总结

gmtime()函数主要用于将日历时间(time_t类型)转换为对应的格林威治标准时间(GMT),可以使用结构体tm来存储时间和日期的信息。使用时需要注意非空判断、年份加上1900、月份加上1的问题。