C++时间结构体(time_t和tm)

阅读: 评论:0

C++时间结构体(time_t和tm)
存储时间常见的有两种存储⽅式,⼀种是从1970年到现在经过了多少秒,⼀种是⽤⼀个结构来分别存储年⽉⽇时分秒的。
time_t 这种类型就是⽤来存储从1970年到现在经过了多少秒,要想更精确⼀点,可以⽤结构struct timeval,它精确到微妙。
struct timeval
{
long tv_sec;/*秒*/
long tv_usec;/*微秒*/
};
⽽tm直接存储年⽉⽇的是⼀个结构:
struct tm
{
int tm_sec;/*秒,正常范围0-59,但允许⾄61*/卤钨灯光谱
int tm_min;/*分钟,0-59*/数字电视解码器
int tm_hour;/*⼩时, 0-23*/
int tm_mday;/*⽇,即⼀个⽉中的第⼏天,1-31*/
int tm_mon;/*⽉,从⼀⽉算起,0-11*/1+p->tm_mon;
int tm_year;/*年,从1900⾄今已经多少年*/1900+ p->tm_year;
int tm_wday;/*星期,⼀周中的第⼏天,从星期⽇算起,0-6*/
int tm_yday;/*从今年1⽉1⽇到⽬前的天数,范围0-365*/
int tm_isdst;/*⽇光节约时间的旗标*/
};
需要特别注意的是,年份是从1900年起⾄今多少年,⽽不是直接存储如2011年,⽉份从0开始的,0表⽰⼀⽉,星期也是从0开始的, 0表⽰星期⽇,1表⽰星期⼀。
下⾯介绍⼀下我们常⽤的时间函数:
#include<time.h>
char*asctime(const struct tm* timeptr);
//将结构中的信息转换为真实世界的时间,以字符串的形式显⽰
char*ctime(const time_t* timep);
将timep转换为真是世界的时间,以字符串显⽰,它和asctime不同就在于传⼊的参数形式不⼀样
double difftime(time_t time1, time_t time2);
返回两个时间相差的秒数
旋转阀门int gettimeofday(struct timeval* tv,struct timezone* tz);
返回当前距离1970年的秒数和微妙数,后⾯的tz是时区,⼀般不⽤
//定义函数
struct tm*gmtime(const time_t* timep);
鹰眼监控系统将time_t表⽰的时间转换为没有经过时区转换的UTC时间,是⼀个struct tm结构指针,C语⾔中gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使⽤的时间⽇期表⽰⽅法,然后将结果由结构tm返回。结构tm的定义为:
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;ca130
int tm_yday;
int tm_isdst;
};
int tm_sec /*代表⽬前秒数,正常范围为0-59,但允许⾄61秒*/ int tm_min /*代表⽬前分数,范围0-59*/
int tm_hour /*从午夜算起的时数,范围为0-23*/
int tm_mday /*⽬前⽉份的⽇数,范围01-31*/
int tm_mon /*代表⽬前⽉份,从⼀⽉算起,范围从0-11*/
int tm_year /*从1900 年算起⾄今的年数*/
无级调速器int tm_wday /*⼀星期的⽇数,从星期⼀算起,范围为0-6*/
int tm_yday /*从今年1⽉1⽇算起⾄今的天数,范围为0-365*/ int tm_isdst /*⽇光节约时间的旗标*/
};
//此函数返回的时间⽇期未经时区转换,⽽是UTC时间。struct tm*localtime(const time_t* timep);
和gmtime类似,但是它是经过时区转换的时间。time_t mktime(struct tm* timeptr);
将struct tm 结构的时间转换为从1970年⾄今的秒数time_t time(time_t* t);
取得从1970年1⽉1⽇⾄今的秒数。

本文发布于:2023-06-05 04:31:43,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/126727.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   结构   转换
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图