c語言日期時間對比函數(shù) c時間比較函數(shù)

C語言 文件中時間與當前系統(tǒng)時間 時間差比較(比較結果返回為天數(shù))最好是調用子函數(shù)解決

#include?stdio.h

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供惠來網(wǎng)站建設、惠來做網(wǎng)站、惠來網(wǎng)站設計、惠來網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、惠來企業(yè)網(wǎng)站模板建站服務,十余年惠來做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

#include?stdlib.h

#include?time.h

int?days(char*?begin_time)???//格式:?"20180914000000"??//2018-9-14?0點0分0秒?

{

struct?tm?tm1;

time_t?time1,time_now;

sscanf(begin_time,"%4d%2d%2d%2d%2d%2d",tm1.tm_year,tm1.tm_mon,tm1.tm_mday,tm1.tm_hour,tm1.tm_min,tm1.tm_sec);

tm1.tm_year-=1900;

tm1.tm_mon--;

tm1.tm_isdst=-1;

time1=mktime(tm1);??//構造time1?

time_now=time(NULL);

tm1=*(localtime(time_now));??????//當時日期

return?(time_now-time1)/(3600*24);?//返回相差天數(shù)?

}

int?main()

{

char?time_in_file[30]={"20180914000000\0"};

printf("\n%d",days(time_in_file));

return?0;

}

C語言 請?zhí)峁┮粋€兩個時間的比較函數(shù)

可以使用CLOCK()函數(shù):

clock()是C/C++中的計時函數(shù),而與其相關的數(shù)據(jù)類型是clock_t。在MSDN中,查得對clock函數(shù)定義如下:

clock_t clock(void) ;

這個函數(shù)返回從“開啟這個程序進程”到“程序中調用clock()函數(shù)”時之間的CPU時鐘計時單元(clock tick)數(shù),在MSDN中稱之為掛鐘時間(wal-clock);若掛鐘時間不可取,則返回-1。其中clock_t是用來保存時間的數(shù)據(jù)類型,在time.h文件中,可以找到對它的定義:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

很明顯,clock_t是一個長整形數(shù)。在time.h文件中,還定義了一個常量CLOCKS_PER_SEC,它用來表示一秒鐘會有多少個時鐘計時單元,其定義如下:

#define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每過千分之一秒(1毫秒),調用clock()函數(shù)返回的值就加1。下面舉個例子,可以使用公式clock()/CLOCKS_PER_SEC來計算一個進程自身的運行時間:

void elapsed_time()

{

printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);

}

C語言的比較兩個時間的函數(shù)

1、方法一:若時間為結構體變量,比較兩個時間的大小,而且不能改變時間的值,可以是:

int timecmp(date_t* date1,date_t* date2)

{

if(date1- year==date1- year)

return memcmp(date1, date2,sizeof(date_t));

else

return date1- year-date2- year

}

2、方法二:

long getTimeInterval(const char *t1, const char *t2) {

struct tm tm1, tm2;

time_t start, end;

double diff;

memset(tm1, 0, sizeof(tm1));

memset(tm2, 0, sizeof(tm2));

strptime(t1, "%Y%m%d", tm1);

start = mktime(tm1);

strptime(t2, "%Y%m%d", tm2);

end = mktime(tm2);

diff = difftime(start, end);

return d2l(diff);

}

調用:

printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20110326"));

printf("getTimeInterval=[%ld]\n", getTimeInterval("20101221", "20990326"));

第一行輸出:[-8208000]

第二行輸出:[1292860801]

3、補充:C語言時間函數(shù):

 (1)、獲得日歷時間函數(shù):

可以通過time()函數(shù)來獲得日歷時間(Calendar Time),其原型為:time_t time(time_t * timer);

 

 如果已經(jīng)聲明了參數(shù)timer,可以從參數(shù)timer返回現(xiàn)在的日歷時間,同時也可以通過返回值返回現(xiàn)在的日歷時間,即從一個時間點(例如:1970年

1月1日0時0分0秒)到現(xiàn)在此時的秒數(shù)。如果參數(shù)為空(NUL),函數(shù)將只通過返回值返回現(xiàn)在的日歷時間,比如下面這個例子用來顯示當前的日歷時間:

(2)、獲得日期和時間函數(shù):

這里說的日期和時間就是平時所說的年、月、日、時、分、秒等信息。從第2節(jié)我們已經(jīng)知道這些信息都保存在一個名為tm的結構體中,那么如何將一個日歷時間保存為一個tm結構的對象呢?

其中可以使用的函數(shù)是gmtime()和localtime(),這兩個函數(shù)的原型為:

struct tm * gmtime(const time_t *timer);

struct tm * localtime(const time_t * timer);

 

 其中gmtime()函數(shù)是將日歷時間轉化為世界標準時間(即格林尼治時間),并返回一個tm結構體來保存這個時間,而localtime()函數(shù)是將

日歷時間轉化為本地時間。比如現(xiàn)在用gmtime()函數(shù)獲得的世界標準時間是2005年7月30日7點18分20秒,那么用localtime()函數(shù)

在中國地區(qū)獲得的本地時間會比世界標準時間晚8個小時,即2005年7月30日15點18分20秒。

C語言有沒有方便一點的比較時間前后的函數(shù)阿

時間 用 time_t 表示的時候,可以用 difftime 函數(shù)作比較。

例如:

#include time.h

time_t t1,t2;

double dif;

無論你用什么方法獲得 t1,t2 的值,例如:

time ( t1 ); t2= time (NULL); 或 t1=mktime(...); 有了 t1,t2

進行比較:

dif = difftime (t2,t1); --- 它計算 t2 - t1, 返回 double 型時間差。

如果 (dif 大于0) { 則 t2 時間在后,}

否則 如果 (dif 小于0){ 則 t2 時間在前,}

否則 {時間一樣}。

本文名稱:c語言日期時間對比函數(shù) c時間比較函數(shù)
分享地址:http://muchs.cn/article20/hgijjo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站內(nèi)鏈、定制網(wǎng)站、App設計虛擬主機、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)