C语言中使用tm结构体的函数有asctime,gmtime,localtime,mktime和strftime。
函数的具体使用说明将在后续文章介绍。本文重点讲解tm结构体。熟悉掌握后,在使用时 可以轻松应对。
tm结构体在time.h中的定义如下:
#ifndef _TM_DEFINED
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到11
int tm_year; // - 年,取值为1900年之后
int tm_wday; // - 星期,取值0到6依次为星期日...星期六
int tm_yday; // - 一年中的日,从一月一之后,取值0到365
int tm_isdst;// - 夏令时标志,正数启动,0不启动,负数不确定是否启动
};
#define _TM_DEFINED
#endif
结构体说明:
1.前面六个成员,依次为秒、分、时、日、月、年。这六个成员就是手表显示的时间和公历上显示的日期。
2.第七个成员tm_wday为一个星期数,按照公历的规则,一个星期的第一天是星期日,因此从0开始计数,星期天就是0,星期一是1,星期六是6。
3.第八个成员为一年中的第几天,总数为365。将一年以天来计算,得到的是当前的日期是一年中的第多少天。
4.最后一个成员tm_isdst指示的是夏令时标志。如果是大于零的数,则表示启动夏令时。如果为零则不启动夏令时。负数则不确定是否启动了夏令时。
5.夏令时主要是将夏天计时时间提前,当然,计算机存储的时间则还是UTC时间。只是在取 出转换时间的时候,根据时区和夏令时标志,计算出夏令时时间返回。
6.夏令时是为了将作息时间调整成与自然天亮时间一致,让人们都更多的生活在白天,减 少夜晚活动时间,从而可以减少晚上消耗的大量能源,很环保。
7.获取日期时间后,此结构体的变量的每个成员就存储了日期时间,我们只要取每个成员的值,就可以得到相应的时间日期时间了。而不用我们自己将原始的整型时间值转换成结构体形式。这样的结构体让使用非常方便了。
8.原始的整型类型的时间类型是time_t,在文章《时间类型time_t详细说明》详细讲解了。