溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語言的ctime()和gmtime()怎么用

發(fā)布時(shí)間:2022-02-19 09:06:58 來源:億速云 閱讀:200 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“C語言的ctime()和gmtime()怎么用”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

函數(shù)原型如下:

 __CRT_INLINE char *__cdecl ctime(const time_t *_Time);
 __CRT_INLINE struct tm *__cdecl gmtime(const time_t *_Time);

ctime函數(shù)

ctime函數(shù)可以將當(dāng)前時(shí)間值轉(zhuǎn)換為字符串格式返回。返回的字符串格式為:Www Mmm dd hh:mm:ss yyyy 其中,Www 表示星期幾,Mmm 是以字母表示的月份,dd 表示一月中的第幾天,hh:mm:ss 表示時(shí)間,yyyy 表示年份。

當(dāng)前時(shí)間值需要通過time函數(shù)獲取,通過time函數(shù)獲取從 1970-01-01 00:00:00 開始到現(xiàn)在所經(jīng)過的秒數(shù)。然后將這個(gè)秒數(shù)作為參數(shù)傳遞到ctime函數(shù)中,ctime函數(shù)將這個(gè)秒數(shù)轉(zhuǎn)換為當(dāng)前時(shí)間格式的字符串返回。

下面通過一個(gè)簡單的例子演示一下ctime函數(shù)的用法。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char** argv)
{
	time_t now_time;

	time(&now_time);

	printf("%s ",ctime(&now_time));

	return 0;
}

首先通過time函數(shù)獲取時(shí)間計(jì)數(shù)值,然后再將這個(gè)計(jì)數(shù)值傳入ctime函數(shù),然后使用 printf函數(shù)將 ctime函數(shù)返回的字符串打印出來。程序運(yùn)行結(jié)果如下:

C語言的ctime()和gmtime()怎么用

gmtime函數(shù)

gmtime函數(shù)是把日期和時(shí)間轉(zhuǎn)換為格林威治(GMT)時(shí)間的函數(shù)。將參數(shù)time 所指的time_t 結(jié)構(gòu)中的信息轉(zhuǎn)換成真實(shí)世界所使用的時(shí)間日期表示方法,然后將結(jié)果由結(jié)構(gòu)tm返回。

這個(gè)理解起來有點(diǎn)抽象,下面直接通過代碼來演示gmtime函數(shù)的用法。

時(shí)間結(jié)構(gòu)信息如下:

struct tm {
   int tm_sec;         /* 秒,范圍從 0 到 59                */
   int tm_min;         /* 分,范圍從 0 到 59                */
   int tm_hour;        /* 小時(shí),范圍從 0 到 23              */
   int tm_mday;        /* 一月中的第幾天,范圍從 1 到 31     */
   int tm_mon;         /* 月份,范圍從 0 到 11              */
   int tm_year;        /* 自 1900 起的年數(shù)                 */
   int tm_wday;        /* 一周中的第幾天,范圍從 0 到 6     */
   int tm_yday;        /* 一年中的第幾天,范圍從 0 到 365   */
   int tm_isdst;       /* 夏令時(shí)                           */    
};

這個(gè)時(shí)間結(jié)構(gòu)的定義在頭文件time.h中。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char** argv)
{
    char *wday[]= {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
	time_t timep;
	struct tm *p;
	time(&timep);
	p=gmtime(&timep); /* 獲取系統(tǒng)當(dāng)前時(shí)間 */
	printf("%d年 %02d月 %02d日",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
	printf("%s %02d:%02d:%02d\n",wday[p->tm_wday],(p->tm_hour+8),p->tm_min,p->tm_sec);

	return 0;
}

系統(tǒng)運(yùn)行結(jié)果如下:

C語言的ctime()和gmtime()怎么用

在這里要注意一點(diǎn),系統(tǒng)返回的年數(shù)是從1900年開始計(jì)算的,所以在打印年份的時(shí)候記得要在年份的值上加上1900。

通過上面兩個(gè)函數(shù)對(duì)吧看出通過ctime函數(shù)得到的時(shí)間格式是字符串形式的,通過gmtime函數(shù)得到的時(shí)間格式是結(jié)構(gòu)體形式的。在程序中更加自己的需要選擇來調(diào)用不同的函數(shù)。

“C語言的ctime()和gmtime()怎么用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI