在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;
}