本文小編為大家詳細介紹“c語言怎么獲取當前日期和時間”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“c語言怎么獲取當前日期和時間”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
創(chuàng)新互聯建站網站建設公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質量求生存,以技術求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網定制,成都網站建設、網站建設,塑造企業(yè)網絡形象打造互聯網企業(yè)效應。
頭文件 time.h
#include
要獲取時間,就不得不說一個函數 time()
原型: time_t time(time_t * timer)
在
php
語言中就有time()
這個函數,返回一個時間戳——也就是一個整數。然后再通過date()
函數進行格式化,轉換成我們想要的時間格式。 在C中,該函數的功能是獲取當前的系統(tǒng)時間,返回的是一個time_t
類型的值。 也是一個時間戳。其實就是一個大整數。這個整數值是怎么算出來的呢,就是從 UTC(Coordinate Universal Time) 時間1970年1月1日00:00:00(稱為UNIX系統(tǒng)的Epoch時間)到當前時刻的秒數。
僅僅有這個秒數還是不夠的,還需要一種方式將其轉化為我們需要的格式。在C中可以調用localtime()
函數將time_t
表示的UTC時間轉換為本地時間(我們是+8區(qū),比UTC多8個小時)并轉成 struct tm
類型。
time_t
的數字是按UTC算的,跟時區(qū)無關,同一個時刻全球所有計算機上的time(NULL)
返回值都相同。 用localtime()
轉換成可顯示的格式時才需要考慮時區(qū)。
將 time_t
轉化為 struct tm
的函數有兩個 —— localtime()
和 gmtime()
原型: struct tm * localtime(time_t *timer)
和 struct tm * gmtime(time_t *timer)
這兩個函數的區(qū)別是 gmtime()
轉換出來的是 0 時區(qū)的時間。而 localtime()
是將本地的時區(qū)計算在內的。 什么意思呢,就是說我們的時區(qū)是+8區(qū),比UTC多8個小時。假設當前時間是 15:40:56
。 使用 gmtime()
轉出來之后就是 7:40:56
; 使用 localtime()
轉出來之后就是 15:40:56
。
下面再來介紹struct tm
struct tm {int tm_sec; // 秒int tm_min; // 分int tm_hour; // 時int tm_mday; // 日int tm_mon; // 月int tm_year; // 年int tm_wday; // 表示周幾 0-6 (0:周日 1:周一 2:周二 3:周三 4:周四 5:周五 6:周六)int tm_yday; // 從 一月一日開始算到現在是一年中的第幾天 取值 0-365int tm_isdst; // 表示是否是夏令時 1是 0否 在mktime() 函數中使用 有時候為-1,則由mktime() 自己去判斷是否是夏令時};
需要注意的是
tm_mon
是從 0 開始的,也就是說月份要加 1;tm_year
是表示從1900到現在過了多少年,也就是今年和1900年的一個差值。所以要使用tm_year
+1900 才表示今年的年份。
下面是完整的例子
#include#include int main(void){time_t time_ptr;struct tm *tmp_ptr = NULL;int year,month,day,hour,minute,sec;// 獲取當前時間time(&time_ptr); tmp_ptr = localtime(&time_ptr); year = tmp_ptr->tm_year + 1900; month = tmp_ptr->tm_mon + 1; day = tmp_ptr->tm_mday; hour = tmp_ptr->tm_hour; minute = tmp_ptr->tm_min; sec = tmp_ptr->tm_sec; printf(date_time,"[%d-%d-%d %d:%d:%d] ",year,month,day,hour,minute,sec);return 0; }
讀到這里,這篇“c語言怎么獲取當前日期和時間”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。