日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C語(yǔ)言time.h的使用

 細(xì)寒 2014-03-22

     以前經(jīng)常在程序中獲取系統(tǒng)時(shí)間,計(jì)算時(shí)間,但是每次都是到網(wǎng)上臨時(shí)找來(lái)一些資料對(duì)付過(guò)去,今天就索性整理一下。

    關(guān)于C語(yǔ)言time.h的一些應(yīng)用。

    clock_t clock(void);    //得到從進(jìn)程啟動(dòng)到此次函數(shù)調(diào)用的累計(jì)的時(shí)鐘滴答數(shù)。每秒包含CLOCKS_PER_SEC(time.h中定義的常量,一般為1000,貌似linux下為1000000)個(gè)時(shí)鐘滴答。時(shí)鐘滴答數(shù)用數(shù)據(jù)類型clock_t表示。clock_t類型一般是32位整數(shù)類型。

    time_t time(time_t* timer);    //得到從標(biāo)準(zhǔn)計(jì)時(shí)點(diǎn)(一般是1970年1月1日0時(shí)0秒)到當(dāng)前時(shí)間的秒數(shù)。日歷時(shí)間用數(shù)據(jù)類型time_t表示。time_t類型實(shí)際上一般是32位或64位整數(shù)類型。

    分解時(shí)間同結(jié)構(gòu)體類型表示tm表示:

    struct tm

    {

        int tm_hour;    //時(shí)    0~23

        int tm_isdst;    //夏令時(shí)是否開啟    開啟(> 0),關(guān)閉(= 0),未知(< 0)

        int tm_mday; //日    0~31

        int tm_min;    //分    0~59

        int tm_mon;   //月    0~11

        int tm_sec;    //秒    0~60(60為天文學(xué)中定義的閏秒)

        int tm_wday;  //星期,從星期天計(jì)    0~6

        int tm_yday;   //本年經(jīng)過(guò)的天數(shù)    0~365

        int tm_year;    //從1900年起經(jīng)過(guò)的年數(shù)    

    };    

    struct tm* gmtime(const time_t* timer);      //從日歷時(shí)間time_t到分解時(shí)間tm的轉(zhuǎn)換。函數(shù)返回的是一個(gè)靜態(tài)分配的tm結(jié)構(gòu)存儲(chǔ)空間,該存儲(chǔ)空間被gmtime,localtime與ctime函數(shù)所共用. 這些函數(shù)的每一次調(diào)用會(huì)覆蓋這塊tm結(jié)構(gòu)存儲(chǔ)空間的內(nèi)容。

    struct tm* gmtime_r(const time_t* timer , struct tm*result);    //該函數(shù)是gmtime函數(shù)的線程安全版本

    struct tm* localtime(const time_t* timer);    //從日歷時(shí)間time_t到分解時(shí)間tm的轉(zhuǎn)換,即結(jié)果數(shù)據(jù)已經(jīng)調(diào)整到本地時(shí)區(qū)與夏令時(shí)。

    time_t mktime(struct tm* ptm);    //從分解時(shí)間tm到日歷時(shí)間time_t的轉(zhuǎn)換。

    time_t timegm(struct tm* brokentime);    //從分解時(shí)間tm(被視作UTC時(shí)間,不考慮本地時(shí)區(qū)設(shè)置)到日歷時(shí)間time_t的轉(zhuǎn)換。該函數(shù)較少被使用。        

    double difftime(time_t timer2, time_t timer1);    //比較兩個(gè)日歷時(shí)間,返回double類型的秒數(shù)差。似乎用處不大,time_t可以直接相減

   

    以下是幾個(gè)把日期數(shù)據(jù)按常用格式輸出的函數(shù):

    char *asctime(const struct tm* tmptr);    //把分解時(shí)間tm輸出到字符串,結(jié)果的格式為"Www Mmm dd hh:mm:ss yyyy",即“周幾 月份數(shù) 日數(shù) 小時(shí)數(shù):分鐘數(shù):秒鐘數(shù) 年份數(shù)”。函數(shù)返回的字符串為靜態(tài)分配,長(zhǎng)度不大于26,與ctime函數(shù)共用。函數(shù)的每次調(diào)用將覆蓋該字符串內(nèi)容。

    char* ctime(const time_t* timer);    //把日歷時(shí)間time_t timer輸出到字符串,輸出格式與asctime函數(shù)一樣。

    size_t strftime(char* s, size_t n, const char* format, const struct tm* tptr);    //把分解時(shí)間tm轉(zhuǎn)換為自定義格式的字符串,類似于常見的字符串格式輸出函數(shù)sprintf。

    char * strptime(const char* buf, const char* format, struct tm* tptr);    //strftime的逆操作,把字符串按照自定義的格式轉(zhuǎn)換為分解時(shí)間tm。恩恩……這個(gè)函數(shù)還是比較有意思的。

    其中上面的自定義格式字符串類型有自己的格式命令符,相當(dāng)多,請(qǐng)讀者自己查閱。

    下面是我寫的代碼:

    //取按下回車前后的系統(tǒng)時(shí)間,并計(jì)算時(shí)間差   

  1 #include<stdio.h>
  2 #include<time.h>
  3 int main()
  4 {
  5     time_t now1,now2,d,h,m,s,t;
  6     struct tm *tnow1,*tnow2;
  7     time(&now1);    tnow1=localtime(&now1);
  8     printf("%s\n",asctime(tnow1));
  9     getchar();//等待回車
 10     time(&now2);    tnow2=localtime(&now2);
 11     printf("%s\n",asctime(tnow2));
 12     t=now2-now1;    d=t/86400;
 13     t%=86400;   h=t/3600;
 14     t%=3600;    m=t/60; s=t%60;
 15     printf("Time Difference: %d day  %d hour  %d mintues  %d seconds\n",d,h,m,s);
 16     return 0;
 17 }

      運(yùn)行結(jié)果:

    

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多