當前位置:首頁 » 操作系統 » linuxtimet

linuxtimet

發布時間: 2025-07-18 14:34:46

㈠ 在linux下, 用C如何設置日期

1.時間表示

在程序當中,我們經常要輸出系統當前的時間,比如我們使用date命令的輸出結果.這個時候我們可以使用下面兩個函數:

#include
time_t time(time_t *tloc);
char *ctime(const time_t *clock);

time函數返回從1970年1月1日0點以來的秒數.存儲在time_t結構之中.不過這個函數的返回值對於我們來說沒有什麼實際意義.這個時候我們使用第二個函數將秒數轉化為字元串. 這個函數的返回類型是固定的:一個可能值為.Thu Dec7 14:58:59 2000 這個字元串的長度是固定的為26.

2.時間的測量
有時候我們要計算程序執行的時間.比如我們要對演算法進行時間分析.這個時候可以使用下面這個函數. #include int gettimeofday(struct timeval *tv,struct timezone *tz); strut timeval { long tv_sec; /* 秒數 */ long tv_usec; /* 微秒數 */ }; gettimeofday將時間保存在結構tv之中.tz一般我們使用NULL來代替. #include #include #include void function() { unsigned int i,j; double y; for(i=0;i<1000;i++) for(j=0;j<1000;j++) y=sin((double)i); } 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\n",timeuse); exit(0); }

這個程序輸出函數的執行時間,我們可以使用這個來進行系統性能的測試,或者是函數演算法的效率分析.在我機器上的一個輸出結果是: Used Time:0.556070

㈡ linux怎麼讀區間函數

系統環境:ubuntu10.04

簡介
本文旨在為了解Linux各種時間類型與時間函數提供技術文檔。

1、Linux下常用時間類型
Linux下常用時間類型有四種:time_t、structtm、structtimeval、structtimespec

1.1time_t時間類型
time_t類型在time.h中定義:

[cpp]view plain

  • #ifndef__TIME_T

  • #define__TIME_T

  • typedeflongtime_t;

  • #endif

  • 可見,time_t實際是一個長整型。其值表示為從UTC(coordinateniversaltime)時間1970年1月1日00時00分00秒(也稱為Linux系統的Epoch時間)到當前時刻的秒數。由於time_t類型長度的限制,它所表示的時間不能晚於2038年1月19日03時14分07秒(UTC)。為了能夠表示更久遠的時間,可用64位或更長的整形數來保存日歷時間,這里不作詳述。
    使用time()函數獲取當前時間的time_t值,使用ctime()函數將time_t轉為當地時間字元串。
    備註:UTC時間有時也稱為GMT時間,其實UTC和GMT兩者幾乎是同一概念。它們都是指格林尼治標准時間,只不過UTC的稱呼更為正式一點。兩者區別在於前者是天文上的概念,而後者是基於一個原子鍾。

    1.2structtm時間類型
    tm結構在time.h中定義:

    [cpp]view plain

  • #ifndef_TM_DEFINED

  • structtm{

  • inttm_sec;/*秒-取值區間為[0,59]*/

  • inttm_min;/*分-取值區間為[0,59]*/

  • inttm_hour;/*時-取值區間為[0,23]*/

  • inttm_mday;/*日-取值區間為[1,31]*/

  • inttm_mon;/*月份-取值區間為[0,11]*/

  • inttm_year;/*年份-其值為1900年至今年數*/

  • inttm_wday;/*星期-取值區間[0,6],0代表星期天,1代表星期1,以此類推*/

  • inttm_yday;/*從每年的1月1日開始的天數-取值區間為[0,365],0代表1月1日*/

  • inttm_isdst;/*夏令時標識符,使用夏令時,tm_isdst為正,不使用夏令時,tm_isdst為0,不了解情況時,tm_isdst為負*/

  • };

  • #define_TM_DEFINED

  • #endif

  • ANSIC標准稱使用tm結構的這種時間表示為分解時間(broken-downtime)。
    使用gmtime()和localtime()可將time_t時間類型轉換為tm結構體;
    使用mktime()將tm結構體轉換為time_t時間類型;
    使用asctime()將structtm轉換為字元串形式。

    1.3structtimeval時間類型
    timeval結構體在time.h中定義:

    [cpp]view plain

  • Structtmieval{

  • time_ttv_sec;/*秒s*/

  • suseconds_ttv_usec;/*微秒us*/

  • };

  • 設置時間函數settimeofday()與獲取時間函數gettimeofday()均使用該事件類型作為傳參。

    1.4structtimespec時間類型
    timespec結構體在time.h定義:

    [cpp]view plain

  • structtimespec{

  • time_ttv_sec;/*秒s*/

  • longtv_nsec;/*納秒ns*/

  • };


  • 2、Linux下常用時間函數
    Linux下常用時間函數有:time()、ctime()、gmtime()、localtime()、mktime()、asctime()、difftime()、gettimeofday()、settimeofday()

    2.1time()函數
    頭文件:#include<time.h>
    函數定義:time_ttime(time_t*timer)
    功能描述:該函數返回從1970年1月1日00時00分00秒至今所經過的秒數。如果time_t*timer非空指針,函數也會將返回值存到timer指針指向的內存。
    返回值:成功則返回秒數,失敗則返回((time_t)-1)值,錯誤原因存於errno中。
    例:

    [cpp]view plain

  • time_tseconds;

  • seconds=time((time_t*)NULL);


  • 2.2ctime()函數
    頭文件:#include<time.h>
    函數定義:char*ctime(consttime_t*timep);
    功能描述:ctime()將參數timep指向的time_t時間信息轉換成實際所使用的時間日期表示方法,並以字元串形式返回。字元串格式為:"WedJun2021:00:002012 "。
    例:

    [cpp]view plain

  • time_ttimep;

  • tmep=time(NULL);

  • printf("%s ",ctime(&timep));


  • 2.3gmtime()函數
    頭文件:#include<time.h>
    函數定義:structtm*gmtime(consttime_t*timep)
    功能描述:gmtime()將參數timep指向的time_t時間信息轉換成以tm結構體表示的GMT時間信息,並以structtm*指針返回。
    GMT:GMT是中央時區,北京在東8區,相差8個小時,所以北京時間=GMT時間+8小時。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

  • time_ttimep;

  • structtm*p_tm;

  • timep=time(NULL);

  • p_tm=gmtime(&timep);/*獲取GMT時間*/

  • printf("%d-%d-%d",(p_tm->tm_year+1900),(p_tm->mon+1),p_tm->tm_mday);

  • printf("%s%d:%d:%d ",wday[p_tm->tm_wday],p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);

  • }


  • 2.4localtime()函數
    頭文件:#include<time.h>
    函數定義:structtm*localtime(consttime_t*timep);
    功能描述:localtime()將參數timep指向的time_t時間信息轉換成以tm結構體表示的本地時區時間(如北京時間=GMT+小時)。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

  • time_ttimep;

  • structtm*p_tm;

  • timep=time(NULL);

  • p_tm=localtime(&timep);/*獲取本地時區時間*/

  • printf("%d-%d-%d",(p_tm->tm_year+1900),(p_tm->mon+1),p_tm->tm_mday);

  • printf("%s%d:%d:%d ",wday[p_tm->tm_wday],p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);

  • return0;

  • }


  • 2.5mktime()函數
    頭文件:#include<time.h>
    函數定義:time_tmktime(structtm*p_tm);
    功能描述:mktime()將參數p_tm指向的tm結構體數據轉換成從1970年1月1日00時00分00秒至今的GMT時間經過的秒數。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • time_ttimep:

  • structtm*p_tm;

  • timep=time(NULL);

  • pintf("time():%d ",timep);

  • p_tm=local(&timep);

  • timep=mktime(p_tm);

  • printf("time()->localtime()->mktime():%d ",timep);

  • return0;

  • }


  • 2.6asctime()函數
    頭文件:#include<time.h>
    函數定義:char*asctime(conststructtm*p_tm);
    功能描述:asctime()將參數p_tm指向的tm結構體數據轉換成實際使用的時間日期表示方法,並以字元串形式返回(與ctime函數相同)。字元串格式為:"WedJun2021:00:002012 "。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • time_ttimep;

  • timep=time(NULL);

  • printf("%s ",asctime(gmtime(&timep)));

  • return0;

  • }


  • 2.7difftime()函數
    頭文件:#include<time.h>
    函數定義:doubledifftime(time_ttimep1,time_ttimep2);
    功能描述:difftime()比較參數timep1和timep2時間是否相同,並返回之間相差秒數。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • time_ttimep1,timep2;

  • timep1=time(NULL);

  • sleep(2);

  • timep2=time(NULL);

  • printf("thedifferenceis%fseconds ",difftime(timep1,timep2));

  • return0;

  • }


  • 2.8gettimeofday()函數
    頭文件:#include<sys/time.h>
    #include<unistd.h>
    函數定義:intgettimeofday(structtimeval*tv,structtimezone*tz);
    功能描述:gettimeofday()把目前的時間信息存入tv指向的結構體,當地時區信息則放到tz指向的結構體。
    structtimezone原型:

    [cpp]view plain

  • structtimezone{

  • inttz_minuteswest;/*miniuteswestofGreenwich*/

  • inttz_dsttime;/*typeofDSTcorrection*/

  • };

  • 例:

    [cpp]view plain

  • structtimevaltv;

  • structtimevaltz;

  • gettimeofday(&tv,&tz);


  • 附:
    使用time函數族獲取時間並輸出指定格式字元串例子(strftime()函數):

    [cpp]view plain

  • intmain(void)

  • {

  • charstrtime[20]={0};

  • time_ttimep;

  • structtm*p_tm;

  • timep=time(NULL);

  • p_tm=localtime(&timep);

  • strftime(strtime,sizeof(strtime),"%Y-%m-%d%H:%M:%S",p_tm);

  • return0;

  • }


  • 2.9settimeofday()函數
    頭文件:#include<sys/time.h>
    #include<unistd.h>
    函數定義:intsettimeofday(conststructtimeval*tv,conststructtimezone*gz);
    功能描述:settimeofday()把當前時間設成由tv指向的結構體數據。當前地區信息則設成tz指向的結構體數據。
    例:

    [cpp]view plain

  • intmain(void)

  • {

  • chart_string[]="2012-04-2822:30:00";

  • structtmtime_tm;

  • structtimevaltime_tv;

  • time_ttimep;

  • intret=0;

  • sscanf(t_string,"%d-%d-%d%d:%d:%d",&time_tm.tm_year,&time_tm.tm_mon,&time_tm.tm_mday,&time_tm.tm_hour,&time_tm.tm_min,&time_tm.tm_sec);

  • time_tm.tm_year-=1900;

  • time_tm.tm_mon-=1;

  • time_tm.tm_wday=0;

  • time_tm.tm_yday=0;

  • time_tm.tm_isdst=0;

  • timep=mktime(&time_tm);

  • time_tv.tv_sec=timep;

  • time_tv.tv_usec=0;

  • ret=settimeofday(&time_tv,NULL);

  • if(ret!=0)

  • {

  • fprintf(stderr,"settimeofdayfailed ");

  • return-1;

  • }

  • return0;

  • }



㈢ linux中用time函數和sprintf函數獲取系統時間的問題

t=localtime(&tt);
sprintf(year,"%d",t->tm_year+1900);
要加1900的。

給你看看我的代碼,另外一種形式,非常簡單,記得採納給分。
time_t t;
time(&t);
char time_str[256]={0};
struct tm* tp= localtime(&t);
strftime(time_str,100,"%Y-%m-%d-%H:%M:%S",tp);
列印這個字元串就是系統當前的時間。

熱點內容
ftp命令使用 發布:2025-07-18 18:13:05 瀏覽:45
辦稅密碼是什麼 發布:2025-07-18 18:12:32 瀏覽:487
linuxftp文件下載 發布:2025-07-18 18:12:30 瀏覽:941
互聯網網站伺服器搭建 發布:2025-07-18 18:01:06 瀏覽:478
安卓手機怎麼辮真偽 發布:2025-07-18 17:13:14 瀏覽:186
java後台json 發布:2025-07-18 17:12:21 瀏覽:680
手機游戲配置主要看哪些 發布:2025-07-18 17:00:47 瀏覽:148
微課源碼 發布:2025-07-18 16:34:44 瀏覽:1001
壓縮長抱枕 發布:2025-07-18 16:13:38 瀏覽:505
如何使用wifi熱點配置網路 發布:2025-07-18 16:06:25 瀏覽:970