#include <time.h> #include <stdio.h> int main() { time_t curTime; curTime = time(NULL); printf("当前时间为:%ld\n",curTime); }1.2、进程时间(或者CPU时间),该时间以时钟滴答计算,系统用clock_t保存这种时间值。
#include<sys/time.h> int gettimeofday(struct timeval* restrict tp, void* restrict tzp);[关键字restrict,只用于限定指针,用于告诉编译器这个指针所指向的内容,只有这个指针可以修改,详细解释请见:http://houjixin.blog.163.com/blog/static/3562841020132793039288/]
struct timeval { time_t tv_sec; /*seconds*/ long tv_usec; /* microseconds*/ };
下面的程序使用该函数获取程序的执行时间:
#include<stdio.h> #include<sys/time.h> #include<unistd.h> int delay(int time) { int i,j; for(i =0;i<time;i++) for(j=0;j<5000;j++) ; } int main() { struct timeval start; struct timeval end; unsigned long diff; gettimeofday(&start,NULL); delay(10); gettimeofday(&end,NULL); diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec; printf(“thedifference is %ld\n”,diff); return 0; }
3、函数localtime和gmtime可以将日历时间转换成年、月、日、时、分、秒等表示的时间,放在结构tm中,该结构体的定义如下所示:
#ifndef _TM_DEFINED struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */ int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */ int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */ int tm_year; /* 年份,其值等于实际年份减去1900 */ int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */ int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ }; #define _TM_DEFINED #endif函数localtime和gmtime的声明形式如下:
#intclude <time.h> struct tm* gmtime(const time_t* calptr); struct tm* localtime(const time_t* calptr);
#intclude <time.h> time_t mktime(struct tm* tmptr);5、函数asctime和ctime,产生用字符串保存的时间,类似与date命令的输出,例如:2013年 03月 07日 星期四 17:55:55 CST,这两个函数的声明如下:
#intclude <time.h> char* asctime(const struct tm* tmptr); char* ctime(const time_t* calptr);函数asctime的参数时tm格式保存的时间指针,而ctime的参数时指向日历时间的指针。
本文参考《UNIX环境高级编程》