当前位置:C++技术网 > 资讯 > 时间数据类型:3 时间日期结构体tm详细解释

时间数据类型:3 时间日期结构体tm详细解释

更新时间:2015-06-26 18:24:44浏览次数:1+次

    tm日期时间结构体类型的定义在time.h中。此结构体存储了时分秒年月日星期夏令时标志等信息。这是时间日期结构体,用于记录日期时间的,所以并没有毫秒这个值。
    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详细说明》详细讲解了。