大家可能在開發過程中經常會遇到獲取當前系統時間的問題。那麼除了MFC中的CTime類外,有沒有其他的方法呢? 答案是肯定的。
很多C/C++的初學者在學習這門語言的時候,經常是隻注意其語法,而其庫函數卻知道的很少。有的知道一些,但是卻很少應用。筆者在這裏建議大家,經常去看看標準C庫,標準C++庫。如果能在開發過程中經常使用上這些庫函數,將會使我們的開發過程變得簡單不少。
那麼標準C中如何獲取本地時間呢? 在這之前請你去找一下time.h這個頭文件,或許你會在裏邊找到一些你以前不知道的東西。
在time.h中定義了一個時間的結構體tm。這個結構體定義如下
#ifndef _TM_DEFINED
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代表一月) - 取值區間爲[0,11] */
int tm_year; /* 年份,其值等於實際年份減去1900 */
int tm_wday; /* 星期 – 取值區間爲[0,6],其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間爲[0,365],其中0代表1月1日,1代表1月2日,以此類推 */
int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst爲正。不實行夏令時的進候,tm_isdst爲0;不瞭解情況時,tm_isdst()爲負。*/
};
#define _TM_DEFINED
#endif
請注意看後邊的註釋哦。
另外有兩個函數
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
前者用來獲取UTC時間,後者用來獲取本地時間。那麼下邊的事情就不用我再說了吧。
最後提醒各位,經常看看庫函數喔。