C语言关于time

在c语言中存在一个结构体类型struct tm,要使用这个结构体应先导入<time.h>头文件

time中存储的时间为 1970-1-1零点零分

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

int main()
{
    
    
	struct tm *tblock;        //声明一个类型为 tm 的结构体
	time_t timer;			     //time_t实际上是长整型,用于储存多种时间数据
	timer = time(NULL);       //只有写了这一步才会把time时间变为计算机内的日历时间
	tblock = localtime(&timer);		//获取当前时间
	printf("%s",asctime(tblock));		//asctime函数返回一个字符串指针,内容为struct tm属性
}

除了以上方法还有另一种方法

struct tm          //tm中本身有这一系列的属性
{
    
    
	int tm_sec; 
	int tm_min; 
	int tm_hour; // 时 - 取值区间为[0,23] 
	int tm_mday; // 一个月中的日期 - 取值区间为[1,31] 
	int tm_mon; //月份(从一月开始,0代表一月) - 取值区间为[0,11] 
	int tm_year; //从1990开始计算
	int tm_wday; // 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一
	int tm_yday; //从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日
};

int main()
{
    
    
	struct tm *t;
	time_t timer;
	timer = time(NULL);
	t = localtime(&timer);
	printf("%d %d %d",t->tm_mday,t->tm_min,t->tm_sec);
}

关于C语言计时

1

一般精确到秒的计时可以用以下方法

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

int main()
{
    
    
	int start,end;
	start = time(NULL);//获得当前系统运行时间
	// Do something.........
	end = time(NULL);//获得处理完事件后系统运行时间
	printf("%d",end-start);	
}

2

对于精确到毫秒的计时我们采用clock来计算

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

int main()
{
    
    
	int start,end;
	start = time(NULL);//获得当前系统运行时间
	// Do something.....
	end = time(NULL);//获得处理完事件后系统运行时间
	printf("%d",end-start);	
}

3

对于精确到微秒的计时我们用一下方法来计算,因为要使用到有关cpu,因此引入windows.h头文件

#include<stdio.h>
#include <windows.h>

int main() 
{
    
    
	double run_time;
	_LARGE_INTEGER time_start;	//开始时间
	_LARGE_INTEGER time_over;	//结束时间
	double dqFreq;		//计时器频率
	LARGE_INTEGER f;	//计时器频率
	QueryPerformanceFrequency(&f);
	dqFreq=(double)f.QuadPart;
	QueryPerformanceCounter(&time_start);	//计时开始
	//Do something......
	QueryPerformanceCounter(&time_over);	//计时结束
	run_time=1000000*(time_over.QuadPart-time_start.QuadPart)/dqFreq;
	//乘以1000000把单位由秒化为微秒,精度为1000 000/(cpu主频)微秒,不乘则以秒为单位 
	printf("\nrun_time:%fus\n",run_time);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/The_RedMaple/article/details/109657229
今日推荐