C语言时间计算

时间计算

1. clock函数
  • 精确度为秒
  • clock函数返回从程序开始执行起处理器始终滴答的次数,为了把这个值转化为秒,应该除以CLOCKS_PER_SEC
#include<time.h>
#include<stdio.h>
#include<unistd.h>
int main()
{
    clock_t t_begin,t_end;
    t_begin =clock(); 
    printf("t_begin is:%d\n", t_begin);
    //sleep(5);
    int s =0;
    for(int i =0; i<1000000000;i++)
    {
        s += i;
    }
    printf("sum is:%d\n",s);
    t_end =clock(); 
    printf("diff is: %f\n",(double)(t_end-t_begin));
    printf("total cost %f s\n",(double)((t_end-t_begin)/CLOCKS_PER_SEC));
    return 0;
}
2. time函数
  • time函数返回值为time_t,表示当前的日期和时间
  • time_t变量(32位有符号量),常见的表示形式为返回从一个特定时刻开始流逝的秒数
  • 使用difftime()函数计算时间差,精度为秒
#include<time.h>
#include<stdio.h>
#include<unistd.h>
int main()
{
    time_t t_begin,t_end;
    time(&t_begin);
    sleep(5);
    time(&t_end);
    /*difftime计算时间差,并把时间转化为秒,返回值为double型*/
    double total_time = difftime(t_end,t_begin);
    printf("total time is:%f\n",total_time);
    return 0;
}
3. gettimeofday函数
  • 实现时间的毫秒级计算
#include <stdio.h>
#include <sys/time.h>
#include <time.h>
 
int main()
{
	timeval start,end;
	gettimeofday(&start, NULL);
    sleep(5);
	gettimeofday(&end, NULL);
	long dif_sec  = end.tv_sec  - start.tv_sec;
	long dif_usec = end.tv_usec - start.tv_usec;
    printf("running time is %ldsec (%ld us)\n\n",  dif_sec, dif_sec*1000000+dif_usec);

	return 0;
}

打印当前时间

  1. 通过time()函数获取当前时间;

  2. 将time_t值转换为tm结构,通过tm结构,我们可以很方便的访问日期和时间的各个组成部分,一般通过以下两个函数实现

struct tm *gmtime(time_t   const * time_vlaue);
struct tm *localtime(time_t const * time_value);
  1. 时间转换为字符串形式,通过strftime实现

    size_t strftime(char* string, size_t maxsize, char const *format, struct tm const* tm_ptr)
    
  2. 具体实现

    #include <stdio.h>
    #include <time.h>
    
    int main()
    {
       time_t t_begin;
       time(&t_begin);
       /*pstTime内存不需要释放 */
       struct tm* pstTime = localtime(&t_begin);
       char pcCurrentTime[64] = {0};
       strftime(pcCurrentTime, (sizeof(pcCurrentTime)-1),"%Y%m%d%H%M%S",pstTime);
       printf("current time is:%s\n",pcCurrentTime);
    
    	return 0;
    }
    
  3. 效果如下
    在这里插入图片描述

其他函数

asctime将参数所表示的时间值转换为以下面格式表示的字符串

char* asctime(struct tm const *tm_ptr)

mktime函数用于将tm结构转换为一个time_t值

time_t mktime(struct tm *tm_Ptr)
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值