time_t 与 tm结构

来源:互联网 发布:php积分商城源码 编辑:程序博客网 时间:2024/04/29 19:26

time_t 与 tm结构  

 

1.    tm 定义
      在标准C/C++中,我们可通过tm结构来获得日期和时间,ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。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代表一月) - 取值区间为[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()为负。*/
        };
#define _TM_DEFINED
#endif
2.    time_t 定义
       日历时间(Calendar Time)是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数:
#ifndef _TIME_T_DEFINED
typedef long time_t;         /* 时间值 */
#define _TIME_T_DEFINED     /* 避免重复定义 time_t */
#endif

        大家可能会产生疑问:既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更久远的时间,一些编译器厂商引入了64位甚至更长的整形数来保存日历时间。比如微软在Visual C++中采用了__time64_t数据类型来保存日历时间,并通过_time64()函数来获得日历时间(而不是通过使用32位字的time()函数),这样就可以通过该数据类型保存3001年1月1日0时0分0秒(不包括该时间点)之前的时间。
        通过查阅MSDN,我们可以知道Microsoft C/C++ 7.0中时间点的值(time_t对象的值)是从1899年12月31日0时0分0秒到该时间点所经过的秒数,而其它各种版本的Microsoft C/C++和所有不同版本的Visual C++都是计算的从1970年1月1日0时0分0秒到该时间点所经过的秒数。

 

3.  常用函数

3.1  time_t time(time_t * timer)

改函数用来获得日历时间(Calendar Time),即:当前到1970年1月1日0时0分0秒经过的秒数.

3.2  struct tm * gmtime(const time_t *timer)

将日历时间转化为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间.

3.3 struct tm * localtime(const time_t * timer)

将日历时间转化为本地时间(标准时间+ 时区偏差时间), 

3.4 char * ctime(const time_t *timer)

      char * asctime(const struct tm * timeptr)

将时间以固定的格式显示出来

星期几 月份 日期 时:分:秒 年\n\0

3.5 time_t mktime(struct tm * timeptr);

将用tm结构表示的时间转化为日历时间


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大专不过统招线怎么办 雅安停天然气了怎么办 调档函过期了怎么办 临时工想涨工资怎么办 辞职了职称公需课怎么办 一师一优课有账号忘记密码怎么办? 长沙转户口档案怎么办 二战迁户口档案怎么办 本人户口页丢失怎么办 户口迁出原籍档案怎么办 户口本丢了一页怎么办 户口本少了一页怎么办 户口页丢了怎么办 公司要社保卡怎么办 公务员面试缺考怎么办 word文档未标签怎么办 暂住证到期了怎么办t 考驾照没暂住证怎么办 南京暂住证过期了怎么办 南京桥北暂住证怎么办 冠状沟红痒一年多了怎么办 介仓身上痒怎么办 专升本考试怎么办 专升本毕业论文怎么办 手机扫码模糊怎么办 iphone相册闪退怎么办 快件签收扫描失败怎么办 创业迷茫的时候怎么办 月经期间腰酸痛怎么办 被重庆微跑骗了怎么办 遴选到中央房子怎么办 转了户口社保怎么办 政府咨询电话打不通怎么办 公务员准考证丢了怎么办 行测老打40多分怎么办 网上没有报名的怎么办? 上大学转户口怎么办 梅菜扣肉勾芡怎么办 有个精神病妈妈怎么办 妈得了精神病该怎么办 思维不正常的人怎么办