C語言時(shí)間函數(shù)的ctime()和gmtime()你了解嗎
函數(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é)果如下:
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é)果如下:
在這里要注意一點(diǎn),系統(tǒng)返回的年數(shù)是從1900年開始計(jì)算的,所以在打印年份的時(shí)候記得要在年份的值上加上1900。
通過上面兩個(gè)函數(shù)對(duì)吧看出通過ctime函數(shù)得到的時(shí)間格式是字符串形式的,通過gmtime函數(shù)得到的時(shí)間格式是結(jié)構(gòu)體形式的。在程序中更加自己的需要選擇來調(diào)用不同的函數(shù)。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(40.組合之和之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(40.組合之和之二),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07vector,map,list,queue的區(qū)別詳細(xì)解析
如果我們需要隨機(jī)訪問一個(gè)容器則vector要比list好得多。如果我們已知要存儲(chǔ)元素的個(gè)數(shù)則vector 又是一個(gè)比list好的選擇。如果我們需要的不只是在容器兩端插入和刪除元素則list顯然要比vector好2013-09-09C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05