獲得日期和時(shí)間
創(chuàng)新互聯(lián)公司專注于兩當(dāng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供兩當(dāng)營(yíng)銷型網(wǎng)站建設(shè),兩當(dāng)網(wǎng)站制作、兩當(dāng)網(wǎng)頁(yè)設(shè)計(jì)、兩當(dāng)網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造兩當(dāng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供兩當(dāng)網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
這里說(shuō)的日期和時(shí)間就是我們平時(shí)所說(shuō)的年、月、日、時(shí)、分、秒等信息。從第2節(jié)我們已經(jīng)知道這些信息都保存在一個(gè)名為tm的結(jié)構(gòu)體中,那么如何將一個(gè)日歷時(shí)間保存為一個(gè)tm結(jié)構(gòu)的對(duì)象呢?
其中可以使用的函數(shù)是gmtime()和localtime(),這兩個(gè)函數(shù)的原型為:
struct
tm
*
gmtime(const
time_t
*timer);
struct
tm
*
localtime(const
time_t
*
timer);
其中g(shù)mtime()函數(shù)是將日歷時(shí)間轉(zhuǎn)化為世界標(biāo)準(zhǔn)時(shí)間(即格林尼治時(shí)間),并返回一個(gè)tm結(jié)構(gòu)體來(lái)保存這個(gè)時(shí)間,而localtime()函數(shù)
是將日歷時(shí)間轉(zhuǎn)化為本地時(shí)間。比如現(xiàn)在用gmtime()函數(shù)獲得的世界標(biāo)準(zhǔn)時(shí)間是2005年7月30日7點(diǎn)18分20秒,那么我用
localtime()函數(shù)在中國(guó)地區(qū)獲得的本地時(shí)間會(huì)比世界標(biāo)準(zhǔn)時(shí)間晚8個(gè)小時(shí),即2005年7月30日15點(diǎn)18分20秒。下面是個(gè)例子:
#include
"time.h"
#include
"stdio.h"
int
main(void)
{
struct
tm
*local;
time_t
t;
t=time(NUL);
local=localtime(t);
printf("Local
hour
is:
%d\n",local-tm_hour);
local=gmtime(t);
printf("UTC
hour
is:
%d\n",local-tm_hour);
return
0;
}
運(yùn)行結(jié)果是:
Local
hour
is:
15
UTC
hour
is:
7
固定的時(shí)間格式
我們可以通過(guò)asctime()函數(shù)和ctime()函數(shù)將時(shí)間以固定的格式顯示出來(lái),兩者的返回值都是char*型的字符串。返回的時(shí)間格式為:
星期幾
月份
日期
時(shí):分:秒
年\n{post.content}
例如:Wed
Jan
02
02:03:55
1980\n{post.content}
其中\(zhòng)n是一個(gè)換行符,{post.content}是一個(gè)空字符,表示字符串結(jié)束。下面是兩個(gè)函數(shù)的原型:
Char
*
asctime(const
struct
tm
*
timeptr);
char
*
ctime(const
time_t
*timer);
其中asctime()函數(shù)是通過(guò)tm結(jié)構(gòu)來(lái)生成具有固定格式的保存時(shí)間信息的字符串,而ctime()是通過(guò)日歷時(shí)間來(lái)生成時(shí)間字符串。這樣的
話,asctime()函數(shù)只是把tm結(jié)構(gòu)對(duì)象中的各個(gè)域填到時(shí)間字符串的相應(yīng)位置就行了,而ctime()函數(shù)需要先參照本地的時(shí)間設(shè)置,把日歷時(shí)間轉(zhuǎn)
化為本地時(shí)間,然后再生成格式化后的字符串。在下面,如果t是一個(gè)非空的time_t變量的話,那么:
printf(ctime(t));
等價(jià)于:
struct
tm
*ptr;
ptr=localtime(t);
printf(asctime(ptr));
那么,下面這個(gè)程序的兩條printf語(yǔ)句輸出的結(jié)果就是不同的了(除非你將本地時(shí)區(qū)設(shè)為世界標(biāo)準(zhǔn)時(shí)間所在的時(shí)區(qū)):
#include
"time.h"
#include
"stdio.h"
int
main(void)
{
struct
tm
*ptr;
time_t
lt;
lt
=time(NUL);
ptr=gmtime();
printf(asctime(ptr));
printf(ctime());
return
0;
}
運(yùn)行結(jié)果:
Sat
Jul
30
08:43:03
2005
Sat
Jul
30
16:43:03
2005
需要利用C語(yǔ)言的時(shí)間函數(shù)time和localtime,具體說(shuō)明如下:
一、函數(shù)接口介紹:
1、time函數(shù)。
形式為time_t time (time_t *__timer);
其中time_t為time.h定義的結(jié)構(gòu)體,一般為長(zhǎng)整型。
這個(gè)函數(shù)會(huì)獲取當(dāng)前時(shí)間,并返回。 如果參數(shù)__timer非空,會(huì)存儲(chǔ)相同值到__timer指向的內(nèi)存中。
time函數(shù)返回的為unix時(shí)間戳,即從1970年1月1日(UTC/GMT的午夜)開(kāi)始所經(jīng)過(guò)的秒數(shù),不考慮閏秒。
由于是秒作為單位的,所以這并不是習(xí)慣上的時(shí)間,要轉(zhuǎn)為習(xí)慣上的年月日時(shí)間形式就需要另外一個(gè)函數(shù)了。
2、localtime函數(shù)。
形式為struct tm *localtime (const time_t *__timer);
其中tm為一個(gè)結(jié)構(gòu)體,包含了年月日時(shí)分秒等信息。
這種結(jié)構(gòu)是適合用來(lái)輸出的。
二、參考代碼:
#include?stdio.h
#include?time.h
int?main?()
{
time_t?t;
struct?tm?*?lt;
time?(t);//獲取Unix時(shí)間戳。
lt?=?localtime?(t);//轉(zhuǎn)為時(shí)間結(jié)構(gòu)。
printf?(?"%d/%d/%d?%d:%d:%d\n",lt-tm_year+1900,?lt-tm_mon,?lt-tm_mday,?lt-tm_hour,?lt-tm_min,?lt-tm_sec);//輸出結(jié)果
return?0;
}
注意事項(xiàng):
struct tm中的tm_year 值為實(shí)際年減去1900, 所以輸出的時(shí)候要是lt-tm_year+1900。
#include stdio.h
#include time.h
int main()
{
time_t timep;
struct tm *p;
time(timep);
p = localtime(timep); //此函數(shù)獲得的tm結(jié)構(gòu)體的時(shí)間,是已經(jīng)進(jìn)行過(guò)時(shí)區(qū)轉(zhuǎn)化為本地時(shí)間
printf("%d%02d%02d%02d%02d%02d\n", 1900+p-tm_year, 1+p-tm_mon, p-tm_mday, p-tm_hour, p-tm_min, p-tm_sec);
return 0;
}
文章名稱:c語(yǔ)言取當(dāng)前日期時(shí)間函數(shù) c獲取時(shí)間函數(shù)
網(wǎng)頁(yè)地址:http://muchs.cn/article32/doccepc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、商城網(wǎng)站、App設(shè)計(jì)、建站公司、定制網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)