C++学习: 时间相关

C++常用的函数在<ctime>中(或time.h)

1,数据结构

表示时间的数据结构有三个:time_t , tm和timeval

 time_t = long int, 用来表示绝对时间

tm是一个struct,里边有如下成员:  tm_sec(秒), tm_min(分),tm_hour(小时),tm_mday(天/月),tm_mon(月),tm_year(年),tm_wday(星期),tm_yday(天/年),tm_isdst(夏时制)

timeval只有linux才有,定义在sys/time.h中, 优点是能精确到微秒, 也是一个struct, 有两个成员tv_sec和tv_usec

还有一个clock_t,其实跟time_t一样 是个长整形

2,常用函数:

获取时间:  

time()定义: time_t time (time_t* timer);获取绝对时间, 参数为空返回当前时间,不为空更新参数为当前时间, 常见的用法:

time_t  t=time(NULL);   或:time(&t)

clock()获取CPU时间, 具体原理不很懂~  与time()的区别在于不计入sleep的时间, 另外它的计量单位是微秒,意味着更加准确

gettimeofday()定义:int gettimeofday(struct timeval *tv, struct timezone *tz);这个是只有linux才有的(include sys/time.h),tz一般不用,好处是timeval可以精确到微秒,可以看做是一个精确版的time(), 当然也没有time方便


功能函数:

difftime():  double difftime (time_t end, time_t beginning);很好用的函数,注意第一个参数是end,第二个才是start, 否则会返回一个负值


转换函数: 几个数据结构和字符串之间的互转

互转: time_t--> tm: localtimestruct tm * localtime (const time_t * timer);

tm-->time_t:mktimetime_t mktime (struct tm * timeptr);

转成字符串:

这两个函数的坑爹之处在于后面自带了一个\n,导致非常不好用. 是作者YY了用户想法结果弄巧成拙的典型范例, 所以写程序(尤其是基础库)最好只提供基础的,必需的服务,扩展之类的东西放到更高更接近应用的层面去做

tm格式:asctimechar* asctime (const struct tm * timeptr);

time_t格式:ctimechar* ctime (const time_t * timer)

好在有办法补救:还有一个格式化字符串的函数strftime

size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );

ptr是字符串指针,

maxsize是字符串最大长度,防止越界(其实我觉得没有更好)

format是格式化字符,常用的格式:%S,%M.%H:秒,分,时%d, %m, %y:日,月,年

timeptr是tm格式的时间

返回字符串长度(不溢出)或0(溢出)


注:现在各个时间函数已经都包括在iostream中,并成为名字空间std的一员. 例如 std::time_t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值