Linux C函数中几个常用的time相关函数
函数原型:time_t time(time_t *t)
说明:返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数,,即获取日历时间;如果t并非空指针的话,此函数会将返回值存到t指针所指的内存
实例:
time_t t;
t = time(NULL);
函数原型:struct tm *gmtime(const time_t *t)
说明:将日历时间转化为格林威治时间和日期,并将结果由结构体tm返回
结构体tm的定义:
struct tm
{
int tm_sec; //目前秒数,0-59
int tm_min; //目前分数,0-59
int tm_hour; //从午夜算起的时数,0-23
int tm_mday; //目前月份的日数,01-31
int tm_mon; //目前月份,从一月起始,0-11
int tm_year; //从1900年算起至今的年数
int tm_wday; //一星期的日数,从星期一算起,0-6
int tm_yday; //从今年1月1日算起至今的天数0-365
int tm_isdst; //日光节约时间的旗标
}
实例:
int main(void)
{
char *wday[]={"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
struct tm *p;
time(&timep);
p = gmtime(&timep);
printf("%d/%d/%d", (1900+p->tm_year), (1+p->tm_mon), (p->tm_mday));
printf("%s %d:%d:%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
}
函数原型:struct tm *localtime(const time_t *t)
说明:将日历时间转化为本地时间和日期
实例:
int main(void)
{
char *wday[]={"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
struct tm *p;
time(&timep);
p=localtime(&timep);
printf("%d/%d/%d", (1900+p->tm_year), (1+p->tm_mon), (p->tm_mday));
printf("%s %d:%d:%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);
}
函数原型:char *astime(const struct tm *timeptr)
说明:以格林威治时间和日期的字符串格式打印
实例:
time_t timep;
time(&timep);
printf("%s", asctime(gmtime(&timep)));
函数原型:char *ctime(const time_t *timep)
说明:以本地时间的字符串方式打印
实例:
time_t timep;
time(&timep);
printf("%s", ctime(&timep));
函数原型:int gettimeofday(struct timeval *tv, struct timezone *tz)
说明:将目前的时间由tv所指的结构返回,当地时区的信息则放到由tz所指的结构中。
timeval 的结构定义为:
struct timeval
{
long tv_sec; //秒
long tv_usec; //微秒
}
timezone 的结构定义为:
struct timezone
{
int tz_minuteswest; //和Greenwich时间差了多少分钟
int tz_dstime; //日光节约时间的状态
}
实例:
/* 算法分析 */
void function()
{
unsigned int i,j;
double y;
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
y++;
}
int main()
{
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL); // 开始时间
function();
gettimeofday(&tpend,NULL); // 结束时间
/* 计算执行时间 */
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+ tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%f us\n",timeuse);
return 0;
}