#include <time.h>

时钟周期(clock cycle)

晶体振荡器在1秒时间内产生的时钟脉冲个数就是时钟周期的频率,宏为 CLOCK_TICK_RATE(=1193180HZ)

时钟滴答(clock tick)

当PIT通道0的计数器减到0值时,它就在IRQ0上产生一次时钟中断,也即一次时钟滴答。1秒时间内PIT所产生的时钟滴答次数叫时钟滴答的频率。

time.h

四个变量类型

size_t   无符号整数类型,它是 sizeof 关键字的结果。

clock_t  clock()函数的返回值,unsigned long,clock返回的是时钟中断数,除以CLOCKS_PER_SEC(1000)就是进程运行秒数。

time_t  存储日历时间类型,time()函数的返回值,从1970/01/01/00:00:00开始到现在的秒数。它的本质也是一个长整形。

struct tm  用来保存时间和日期的结构。注意中国时区为UTC-8,手动转换为北京时间时要加8h,用localtime函数计算本地时间会自动转换,不需要加8小时。

struct tm 
{
   int tm_sec;         /* 秒,范围从 0 到 59      */
   int tm_min;         /* 分,范围从 0 到 59      */
   int tm_hour;        /* 小时,范围从 0 到 23     */

   int tm_mday;        /* 一月中的第几天,范围从 1 到 31    */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6 */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365   */

   int tm_mon;         /* 月,范围从 0 到 11(注意)  */
   int tm_year;        /* 自 1900 年起的年数      */
   
   int tm_isdst;       /* 夏令时               */
};

几个函数

clock_t clock(void);

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

clock_t是用来保存时间的长整形数据类型。

还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个clock tick,一般取值为1000。

核心代码:    
    double TheTimes;
    printf("做%ld次空循环需要的时间为",i);
    start=clock();
    while(/*判断条件*/)
        /*循环内容*/;
    finish=clock();
    TheTimes=(double)((finish-start)/CLOCKS_PER_SEC);

 

time_t  time(time_t * timer)     //这个函数如果读取失败返回-1,但是编译器可能定义time_t为无符号型,所以进行错误检查时,用if(timer==(time_t)-1)进行判断!

该函数返回值是1970年至今的秒数,形参参数timer可以是NULL,也可以是一个传出参数,它的值和返回值相等。

核心代码:
    
    time_t t1,t2; //分别声明两种使用方式的赋值对象
    t1=time(0);   //第一种使用方式
    time(&t2);    //第二种使用方式
	
    printf("t1=%ld\n",t1);
    printf("t2=%ld",t2);

执行结果:
t1=1531208713
t2=1531208713

 

localtime函数,gmtime函数,asctime函数,ctime函数

struct tm * localtime(const time_t *timer)    //使用timer的值来填充tm结构,并用本地时区表示。

struct tm * gmtime(time_t *timer)    //使用timer的值来填充tm结构,并用格林威治标准时间表示。

 

char* asctime(struct tm * ptr)    //   将结构tm转换为字符串,字符串的格式为:星期,月,日,小时:分:秒,年

char * ctime(const time_t * timer)   //等价于astime( localtime(timer)

#include <stdio.h>
#include <time.h>

/**********localtime()+asctime()组合***********/
int main ()
{
   time_t timer;
   struct tm *Now;

   time( &timer );                //获取当前秒数
   Now = localtime( &timer );       //将当前秒数格式化为tm格式
   printf("当前的本地时间和日期:%s", asctime(Now));    //以字符串的形式输出当前时间

   return(0);
}

/***************ctime()单干*****************/
int main ()
{
   time_t curtime;
   time(&curtime);
   printf("当前时间 = %s", ctime(&curtime));

   return(0);
}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值