C語言時間函數的ctime()和gmtime()你瞭解嗎
函數原型如下:
__CRT_INLINE char *__cdecl ctime(const time_t *_Time); __CRT_INLINE struct tm *__cdecl gmtime(const time_t *_Time);
ctime函數
ctime函數可以將當前時間值轉換為字符串格式返回。返回的字符串格式為:Www Mmm dd hh:mm:ss yyyy 其中,Www 表示星期幾,Mmm 是以字母表示的月份,dd 表示一月中的第幾天,hh:mm:ss 表示時間,yyyy 表示年份。
當前時間值需要通過time函數獲取,通過time函數獲取從 1970-01-01 00:00:00 開始到現在所經過的秒數。然後將這個秒數作為參數傳遞到ctime函數中,ctime函數將這個秒數轉換為當前時間格式的字符串返回。
下面通過一個簡單的例子演示一下ctime函數的用法。
#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函數獲取時間計數值,然後再將這個計數值傳入ctime函數,然後使用 printf函數將 ctime函數返回的字符串打印出來。程序運行結果如下:
gmtime函數
gmtime函數是把日期和時間轉換為格林威治(GMT)時間的函數。將參數time 所指的time_t 結構中的信息轉換成真實世界所使用的時間日期表示方法,然後將結果由結構tm返回。
這個理解起來有點抽象,下面直接通過代碼來演示gmtime函數的用法。
時間結構信息如下:
struct tm { int tm_sec; /* 秒,范圍從 0 到 59 */ int tm_min; /* 分,范圍從 0 到 59 */ int tm_hour; /* 小時,范圍從 0 到 23 */ int tm_mday; /* 一月中的第幾天,范圍從 1 到 31 */ int tm_mon; /* 月份,范圍從 0 到 11 */ int tm_year; /* 自 1900 起的年數 */ int tm_wday; /* 一周中的第幾天,范圍從 0 到 6 */ int tm_yday; /* 一年中的第幾天,范圍從 0 到 365 */ int tm_isdst; /* 夏令時 */ };
這個時間結構的定義在頭文件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); /* 獲取系統當前時間 */ 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; }
系統運行結果如下:
在這裡要註意一點,系統返回的年數是從1900年開始計算的,所以在打印年份的時候記得要在年份的值上加上1900。
通過上面兩個函數對吧看出通過ctime函數得到的時間格式是字符串形式的,通過gmtime函數得到的時間格式是結構體形式的。在程序中更加自己的需要選擇來調用不同的函數。
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- C語言時間函數之mktime和difftime詳解
- C語言時間函數之strftime()詳解
- c++11多種格式時間轉化為字符串的方法實現
- Python中time庫的使用(日期時間)
- python語言time庫和datetime庫基本使用詳解