linux常用时间函数:time,gettimeofday,clock_gettime,ftime
2019-07-13 08:17发布
生成海报
-
time()提供了秒级的精确度
-
-
1、头文件
-
2、函数原型
-
time_t time(time_t * timer)
-
函数返回从TC1970-1-1 0:0:0开始到现在的秒数
-
-
用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。
-
-
#include
-
#include
-
int main(void)
-
{
-
time_t t;
-
t = time(NULL);
-
printf("The number of seconds since January 1, 1970 is %ld",t);
-
return 0;
-
}
-
-
#include
-
#include
-
#include
-
int main(void)
-
{
-
time_t timer;
-
struct tm *tblock;
-
timer = time(NULL);
-
tblock = localtime(&timer);
-
printf("Local time is: %s/n",asctime(tblock));
-
-
return 0;
-
}
-
gettimeofday()提供了微秒级的精确度
-
-
1、头文件
-
2、函数原型
-
int gettimeofday(struct timeval *tv, struct timezone *tz);
-
-
gettimeofday()会把目前的时间由tv所指的结构返回,当地时区的信息则放到tz所指的结构中(可用NULL)。
-
参数说明:
-
timeval结构定义为:
-
struct timeval
-
{
-
long tv_sec;
-
long tv_usec;
-
};
-
timezone 结构定义为:
-
struct timezone
-
{
-
int tz_minuteswest;
-
int tz_dsttime;
-
};
-
上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime 所代表的状态如下
-
DST_NONE
-
DST_USA
-
DST_AUST
-
DST_WET
-
DST_MET
-
DST_EET
-
DST_CAN
-
DST_GB
-
DST_RUM
-
DST_TUR
-
DST_AUSTALT
-
-
返回值: 成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。
-
-
#include
-
#include
-
int main(void)
-
{
-
struct timeval tv;
-
struct timezone tz;
-
-
gettimeofday (&tv , &tz);
-
-
printf(“tv_sec; %d/n”, tv,.tv_sec) ;
-
printf(“tv_usec; %d/n”,tv.tv_usec);
-
-
printf(“tz_minuteswest; %d/n”, tz.tz_minuteswest);
-
printf(“tz_dsttime, %d/n”,tz.tz_dsttime);
-
-
return 0;
-
}
-
clock_gettime( ) 提供了纳秒级的精确度
-
-
1、头文件
-
2、编译&链接。
-
3、函数原型
-
int clock_gettime(clockid_t clk_id, struct timespect *tp);
-
参数说明:
-
clockid_t clk_id 用于指定计时时钟的类型,有以下4种:
-
CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户该成其他,则对应的时间相应改变
-
CLOCK_MONOTONIC:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响
-
CLOCK_PROCESS_CPUTIME_ID:本进程到当前代码系统CPU花费的时间
-
CLOCK_THREAD_CPUTIME_ID:本线程到当前代码系统CPU花费的时间
-
struct timespect *tp用来存储当前的时间,其结构如下:
-
struct timespec
-
{
-
time_t tv_sec;
-
long tv_nsec;
-
};
-
返回值。0成功,-1失败
-
-
#include
-
#include
-
int main()
-
{
-
struct timespec ts;
-
-
clock_gettime(CLOCK_REALTIME, &ts);
-
printf("CLOCK_REALTIME: %ld, %ld
", ts.tv_sec, ts.tv_nsec);
-
-
clock_gettime(CLOCK_MONOTONIC, &ts);
-
printf("CLOCK_MONOTONIC: %ld, %ld
", ts.tv_sec, ts.tv_nsec);
-
-
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts);
-
printf("CLOCK_PROCESS_CPUTIME_ID: %ld, %ld
", ts.tv_sec, ts.tv_nsec);
-
-
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
-
printf("CLOCK_THREAD_CPUTIME_ID: %ld, %ld
", ts.tv_sec, ts.tv_nsec);
-
-
printf("n%d
", time(NULL));
-
-
return 0;
-
}
-
/proc/uptime里面的两个数字分别表示:
-
the uptime of the system (seconds), and the amount of time spent in idle process (seconds).
-
把第一个数读出来,那就是从系统启动至今的时间,单位是秒
-
ftime()提供毫秒级的精确度
-
-
1、头文件 and
-
2、函数原型
-
void ftime(struct _timeb *timeptr);
-
参数说明:
-
struct timeb
-
{
-
time_t time;
-
unsigned short millitm;
-
short timezone;
-
short dstflag;
-
};
-
-
#include
-
#include
-
#include
-
-
void main( void )
-
{
-
struct timeb timebuffer;
-
char *timeline;
-
-
ftime( &timebuffer );
-
timeline = ctime( & ( timebuffer.time ) );
-
-
printf( "The time is %.19s.%hu %s", timeline, timebuffer.millitm, &timeline[20] );
-
}
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮