經常使用C語言time時間函數

經常使用C語言time時間函數

常見的時間函數有time( )、ctime( )、gmtime( )、localtime( )、mktime( )、asctime( )、difftime( )、gettimeofday( )、settimeofday( )
其中,gmtime和localtime函數差很少,只是localtime函數會按照時區輸出,而gmtime是用於輸出0時區的
常見的時間類型有
time_t
struct timeval(設置時間函數settimeofday( )與獲取時間函數gettimeofday( )均使用該事件類型做爲傳參。)
struct tm,
struct timespec
使用gmtime( )和localtime( )可將time_t時間類型轉換爲tm結構體;
使用mktime( )將tm結構體轉換爲time_t時間類型;
使用asctime( )將struct tm轉換爲字符串形式。ide

//各個結構體的定義
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, 11]*/  
    int tm_year; /*年份 - 其值爲1900年至今年數*/  
    int tm_wday; /*星期 - 取值區間[0, 6],0表明星期天,1表明星期1,以此類推*/  
    int tm_yday; /*從每一年的1月1日開始的天數-取值區間爲[0, 365],0表明1月1日*/  
    int tm_isdst; /*夏令時標識符,使用夏令時,tm_isdst爲正,不使用夏令時,tm_isdst爲0,不瞭解狀況時,tm_isdst爲負*/  
};  
Struct tmieval{  
    time_t tv_sec; /*秒s*/  
    suseconds_t tv_usec; /*微秒us*/  
}; 
struct timespec{  
    time_t tv_sec; /*秒s*/  
    long tv_nsec; /*納秒ns*/  
};

如今咱們來看一下使用這些函數的程序
首先是time()函數的使用函數

[root@bogon time]# cat time.c 
#include<time.h>
#include<unistd.h>
#include<stdio.h>
int main()
{
    time_t seconds,sec,time1,time2;
    struct tm *mytm,gettm;
    seconds=time(NULL);
    mytm=localtime(&seconds);//localtime的參數爲time_t類型
    sec=mktime(mytm);//mktime參數爲結構體tm類型
    time1=time(NULL);//time參數類型爲time_t類型,或者爲NULL也能夠
    sleep(1);//由於要difftime,因此讓time1和time2不一樣
    time2=time(NULL);
    printf("use time: %ld\n",seconds);
    printf("use ctime: %s",ctime(&seconds));//ctime的類型也爲time_t類型
    printf("use gmtime: %d-%d-%d\n",(mytm->tm_year)+1900,(mytm->tm_mon)+1,mytm->tm_mday);
    printf("use mktime :%ld\n",sec);
    printf("use asctime: %s",asctime(mytm));//跟ctime功能差很少,只是它的參數是結構體tm類型的
    printf("use difftime: %lf\n",difftime(time1,time2));//計算time1-time2
    return 0;
}
[root@bogon time]# gcc time.c 
[root@bogon time]# ./a.out
use time: 1495946001
use ctime: Sat May 27 21:33:21 2017
use gmtime: 2017-5-27
use mktime :1495946001
use asctime: Sat May 27 21:33:21 2017
use difftime: -1.000000
[root@bogon time]#
相關文章
相關標籤/搜索