关于Ctime库

Posted cgjh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Ctime库相关的知识,希望对你有一定的参考价值。

---------------------

本文来自 Fuko_Ibuki 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_31908675/article/details/81233816?utm_source=copy   

ctime

时间!关于日期和时间的计算在信息学竞赛中非常重要. 
这一次我来介绍一下ctime中两个神奇的函数. 
1:clock 
这个东西可以算代码运行的时间.用法是这样的:



clock_t nowtime=clock();
...
cout<<clock()-nowtime<<endl;123

这时候输出了一个数字,单位是毫秒,表示运行的时间. 
这样就可以判断你是不是tletletle了. 
爆搜到时限之后直接输出?1?1-1其实也是用的这种方法. 
2.difftime 
这个函数用来算两个时间之间的时间差. 
用法? 
首先在c++中,时间是由一个叫tmtmtm的结构体储存的. 
这个结构体有9个成员.



struct tm{
int tm_sec;//
int tm_min;//分钟
int tm_hour;//小时
int tm_mday;//(这个月的)哪一天
int tm_mon;//
int tm_year;//年(这个年是以1900作为起始时间的,设置的时候要减去1900)
int tm_wday;//星期几,0表示星期天
int tm_yday;//今年从1月1日开始的第几天
int tm_isdst;//是否是夏令时
};1234567891011

然后有一个函数mktime(&t) 可以将结构体表示的时间变为秒表示的时间. 
接下来用difftime函数可以算出两个日期之间差的秒数,除以864008640086400就是天数. 
举例计算从今年7月22日(谁的生日?) 到今天 (7月27日) 的天数.应该是5天.

int main()
{
    tm t1= {0},t2= {0};
    t1.tm_year=2018-1900,t1.tm_mon=6,t1.tm_mday=22;
    t2.tm_year=2018-1900,t2.tm_mon=6,t2.tm_mday=27;
    cout<<difftime(mktime(&t2),mktime(&t1))/86400<<endl;
}//输出51234567

要注意的点: 
1.年份从1900开始,月份以1月为准,要减掉1; 
2.计算的时间的范围在[1900,3000]之间.别过界了. 
这样我们再也不怕询问时间的问题了!

 

以上是关于关于Ctime库的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段返回主要活动

Chrome-Devtools代码片段中的多个JS库

关于代码片段的时间复杂度

错误 C4996:“ctime”:此函数或变量可能不安全

Xamarin Android 片段库

关于右值的范围和内存泄漏