C++中的时间

1.clock(),其相关的数据类型是clock_t

这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。

在time.h文件中,我们可以找到对它的定义: 
#ifndef _CLOCK_T_DEFINED 
typedef long clock_t; 
#define _CLOCK_T_DEFINED 
#endif 

计算一个进程自身的运行时间

void elapsed_time() 


     printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);

 

运行一个循环或者处理其它事件到底花了多少时间:

    long     i = 10000000L; 
    clock_t start, finish; 
    double   duration; 
    /* 测量一个事件持续的时间*/ 
    printf( "Time to do %ld empty loops is ", i ); 
    start = clock(); 
    while( i-- )       ; 
    finish = clock(); 
    duration = (double)(finish - start) / CLOCKS_PER_SEC; 
    printf( "%f seconds\n", duration ); 

2.通过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代表一月) - 取值区间为[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 

3.日历时间(Calendar Time)是通过time_t数据类型来表

从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数

不能晚于2038年1月18日19时14分07秒

time_t lt; 

lt =time(NUL); //从1970年1月1日0时0分0秒到此时的秒数

4.秒数转为年月日

struct tm *local

 local=localtime(&t); //当地时间,UTC+8(北京时间)

local=gmtime(&t); //世界标准时间 UTC

5.自定义时间格式

使用strftime()函数将时间格式化为我们想要的格式--strftime

        //std::string sTime = sysInfoEvent.msgEvent.event_log_id();
        //time_t tt= atoi(sTime.c_str());
        //char buff[128]; 
        //strftime(buff, sizeof(buff), "%Y-%m-%d %H:%M:%S", localtime(&tt));
        //sTime = buff;
        //std::stringstream sstest;
        //sstest<<time(NULL);
        //std::string sLogID = sstest.str();

6.年月日转为秒

time_t mktime(struct tm * timeptr);

struct tm t; 
     time_t t_of_day; 
     t.tm_year=1997-1900; 
     t.tm_mon=6; 
     t.tm_mday=1; 
     t.tm_hour=0; 
     t.tm_min=0; 
     t.tm_sec=1; 
     t.tm_isdst=0; 
     t_of_day=mktime(&t); 
     printf(ctime(&t_of_day)); 










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值