time 结构体

struct tm 
{  
int tm_sec; /* 秒–取值区间为[0,59] */   
int tm_min; /* 分 - 取值区间为[0,59] */   
int tm_hour;         /* 时 - 取值区间为[0,23] */   
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */  
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11]*/ 
int tm_year;         /* 年份,其值从1900开始 */  
int tm_wday;         /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */  
int tm_yday;         /* 从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */  
int tm_isdst;         /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/  
long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/   
const char *tm_zone;     /*当前时区的名字(与环境变量TZ有关)*/  
}; 

范例

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

int main(){
    time_t ta;
    struct tm * t;
    time(&ta);
    t = localtime(&ta);
    printf("tm_sec = %d\n", t->tm_sec);
    printf("tm_min = %d\n", t->tm_min);
    printf("tm_hour = %d\n", t->tm_hour);
    printf("tm_mday = %d\n", t->tm_mday);
    printf("tm_mon = %d\n", t->tm_mon + 1);
    printf("tm_year = %d\n", t->tm_year + 1900);
    printf("tm_wday = %d\n", t->tm_wday);
    printf("tm_isdst = %d\n", t->tm_isdst);
    printf("tm_gmtoff = %ld\n", t->tm_gmtoff);
    printf("tm_zone = %s\n", t->tm_zone);
}

执行

bogon:time xqhero$ ./time
tm_sec = 34
tm_min = 22
tm_hour = 23
tm_mday = 27
tm_mon = 1
tm_year = 2021
tm_wday = 3
tm_isdst = 0
tm_gmtoff = 28800
tm_zone = CST

函数关系

time_t ————– tm

- localtime  将 time_t  转换成 tm 结构
- gmtime   将time_t 转换成 tm 结构

tm —————- time_t

- mktime   将 tm 转换成 time_t 结构

time_t —————- char

- ctime    将 time_t 转换成 日期时间字符串 

tm ——————– char

- asctime  将 tm 转换成 日期时间字符串
文档更新时间: 2021-03-07 21:30   作者:周国强