time_t nowtime; -- 聲明變量 nowtime(現(xiàn)在時(shí)間) 為 time_t 型

我們提供的服務(wù)有:做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鄂托克ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鄂托克網(wǎng)站制作公司
struct tm *timeinfo; -- 聲明變量timeinfo(時(shí)間信息)為 tm 型 結(jié)構(gòu) 指針。
time_t , tm 都是 time.h 頭文件里定義 的 類型。
time( nowtime ); -- 調(diào)系統(tǒng)函數(shù) time(), 獲得 現(xiàn)在時(shí)間 (1970年起多少個(gè)“滴答”,世界標(biāo)準(zhǔn)時(shí)間)
timeinfo = localtime( nowtime ); -- 調(diào)系統(tǒng)函數(shù), 獲得 當(dāng)?shù)?現(xiàn)在時(shí)間 (例如 東8 區(qū),北京時(shí)間)。時(shí)間數(shù)據(jù)是 tm 型 結(jié)構(gòu)。
int hour; -- 聲明變量 hour (小時(shí)),整型。
hour = timeinfo-tm_hour+1 ; -- 結(jié)構(gòu) timeinfo的成員tm_hour 是時(shí)間值,+1 得 hour(小時(shí))。
tm_hour -- 數(shù)值范圍 0-23。
CLOCK()函數(shù):
clock()是C/C++中的計(jì)時(shí)函數(shù),而與其相關(guān)的數(shù)據(jù)類型是clock_t。在MSDN中,查得對(duì)clock函數(shù)定義如下:
clock_t
clock(void)
;
這個(gè)函數(shù)返回從“開啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock
tick)數(shù),在MSDN中稱之為掛鐘時(shí)間(wal-clock);若掛鐘時(shí)間不可取,則返回-1。其中clock_t是用來保存時(shí)間的數(shù)據(jù)類型,在time.h文件中,我們可以找到對(duì)它的定義:
#ifndef
_CLOCK_T_DEFINED
typedef
long
clock_t;
#define
_CLOCK_T_DEFINED
#endif
很明顯,clock_t是一個(gè)長整形數(shù)。在time.h文件中,還定義了一個(gè)常量CLOCKS_PER_SEC,它用來表示一秒鐘會(huì)有多少個(gè)時(shí)鐘計(jì)時(shí)單元,其定義如下:
#define
CLOCKS_PER_SEC
((clock_t)1000)
可以看到每過千分之一秒(1毫秒),調(diào)用clock()函數(shù)返回的值就加1。下面舉個(gè)例子,你可以使用公式clock()/CLOCKS_PER_SEC來計(jì)算一個(gè)進(jìn)程自身的運(yùn)行時(shí)間:
void
elapsed_time()
{
printf("Elapsed
time:%u
secs.\n",clock()/CLOCKS_PER_SEC);
}
當(dāng)然,你也可以用clock函數(shù)來計(jì)算你的機(jī)器運(yùn)行一個(gè)循環(huán)或者處理其它事件到底花了多少時(shí)間:
#include
stdio.h
#include
stdlib.h
#include
time.h
int
main(void)
{
long
i
=
10000000L;
clock_t
start,
finish;
double
duration;
/*
測量一個(gè)事件持續(xù)的時(shí)間*/
printf(
"Time
to
do
%ld
empty
loops
is
",
i)
;
start
=
clock();
while(
i--
);
finish
=
clock();
duration
=
(double)(finish
-
start)
/
CLOCKS_PER_SEC;
printf(
"%f
seconds\n",
duration
);
system("pause");
}
在筆者的機(jī)器上,運(yùn)行結(jié)果如下:
Time
to
do
10000000
empty
loops
is
0.03000
seconds
上面我們看到時(shí)鐘計(jì)時(shí)單元的長度為1毫秒,那么計(jì)時(shí)的精度也為1毫秒,那么我們可不可以通過改變CLOCKS_PER_SEC的定義,通過把它定義的大一些,從而使計(jì)時(shí)精度更高呢?通過嘗試,你會(huì)發(fā)現(xiàn)這樣是不行的。在標(biāo)準(zhǔn)C/C++中,最小的計(jì)時(shí)單位是一毫秒。
time_t
time(
time_t
*timer
);
返回值是1970年到現(xiàn)在的秒數(shù)
用long型接就可以了
參數(shù)也是同樣意義
如
long
time_s
=
0;
time_s
=
time(
NULL
);
//
time_s就是1970年到現(xiàn)在的秒數(shù)
或者
long
*
time_s
=
NULL;
time(time_s);
//
*time_s就是1970年到現(xiàn)在的秒數(shù)
要計(jì)算前后一段時(shí)間的話之前取一次time,之后取一次相減就知道用了多少秒了
1、time_t // 時(shí)間類型(time.h 定義)?
struct tm { // 時(shí)間結(jié)構(gòu),time.h 定義如下:?
int tm_sec;?
int tm_min;?
int tm_hour;?
int tm_mday;?
int tm_mon;?
int tm_year;?
int tm_wday;?
int tm_yday;?
int tm_isdst;?
}?
time ( rawtime ); // 獲取時(shí)間,以秒計(jì),從1970年1月一日起算,存于rawtime?
localtime ( rawtime ); //轉(zhuǎn)為當(dāng)?shù)貢r(shí)間,tm 時(shí)間結(jié)構(gòu)?
asctime() // 轉(zhuǎn)為標(biāo)準(zhǔn)ASCII時(shí)間格式:?
//就是直接打印tm,tm_year 從1900年計(jì)算,所以要加1900,月tm_mon,從0計(jì)算,所以要加1
2、time函數(shù)使用示例
#include?stdio.h??
#include?time.h????
int?main()
{??
time_t?rawtime;??
struct?tm?*?timeinfo;??
time?(?rawtime?);??
timeinfo?=?localtime?(?rawtime?);??
printf?(?"The?current?date/time?is:?%s",?asctime?(timeinfo)?);??
return?0;
}
C語言的建時(shí)間函數(shù)是 mktime(),原型在 time.h 里
調(diào)用有點(diǎn)繁。
下面,用我的程序輸入 年月日時(shí)分秒,調(diào)用mktime(), 就得 C語言 可直接使用的 時(shí)間, 存放在 t 里。
例如 輸入年月日時(shí)分秒: 2008 8 16 9 55 25
time_t t; 里 就有了 各種時(shí)間信息,例如星期幾...
#include stdio.h
#include time.h
void main(){
struct tm *target_time;
time_t rawtime, t;
int year,month,mday,hh,mm,ss;
time ( rawtime );
target_time = localtime ( rawtime );
printf("Please enter year month day hour minute second\n");
printf("For example: \n");
printf("2008 8 16 9 55 25\n");
scanf("%d %d %d %d %d %d", year, month, mday, hh,mm,ss);
target_time-tm_year = year - 1900;
target_time-tm_mon= month - 1;
target_time-tm_mday = mday ;
target_time-tm_hour = hh ;
target_time-tm_min = mm ;
target_time-tm_sec = ss ;
//
t = mktime (target_time);
// t is ready to use
printf("%s ",ctime(t));
}
#include cstdio
#include ctime
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void printTime() {
struct tm t;? ?//tm結(jié)構(gòu)指針
time_t now;? //聲明time_t類型變量
time(now);? ? ? //獲取系統(tǒng)日期和時(shí)間
localtime_s(t, now);? ?//獲取當(dāng)?shù)厝掌诤蜁r(shí)間
? ?//格式化輸出本地時(shí)間
printf("年-月-日-時(shí)-分-秒:%d-%d-%d %d:%d:%d\n", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
}
int main(int argc, char** argv) {
printTime();
}
分享名稱:c語言時(shí)間函數(shù)的寫法 C語言時(shí)間類型
分享URL:http://chinadenli.net/article26/hghijg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、標(biāo)簽優(yōu)化、做網(wǎng)站、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)