本地時間(LT)是東八區的時間,格林尼治時間(GMT)是0時區的時間,世界協調時(UTC)是修正後的格林尼治時間。
我們可以粗略地認爲世界協調時(UTC)就是格林尼治時間(GMT)。
本地時間在東八區,世界協調時(UTC)在0時區,所以東八區比世界協調時早8個小時,即假如現在世界協調時(UTC)爲0時,則本地時間爲8時。
time_t表示世界協調時(UTC),比如現在本地時間爲2017/11/30 22:0:0,則取到的time_t表示2017/11/3014:0:0,距離1970年1月1日0時0分0秒的秒數。
取到time_t變量的函數爲time time(*time);可以
time_t timep;
timep=time(NULL);也可以
time_t timep;
time(&timep);
時間塊結構體tm包括了年、月、日、時、分、秒等變量,定義如下:
struct tm{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
}
其中tmmday表示month day,該月中第幾天;tmwday,表示,week day,該週中第幾天;tmyday表示year day,該年中第幾天;isdst表示是否爲夏令時,爲正數表示是夏令時,爲0表示不是夏令時,爲負數表示計算機自動判斷是否爲夏令時。
time_t轉換爲tm的函數爲
tm* gmtime(const time_t* timep); //將time_t轉換爲協調世界時,比如,當前時間爲2017年12月1日,9時0分0秒,獲取到當前時間的time_t,在把time_t通過gmtime()函數轉化後得到的時間塊結構體裏的時間爲2017年12月1日,1時0分0秒。
tm* localtime(const time_t* timep); //將time_t轉換爲本地時間,比如,當前時間爲2017年12月1日,9時0分0秒,獲取到當前時間的time_t,在把time_t通過localtime()函數轉化後得到的時間塊結構體裏的時間爲2017年12月1日,9時0分0秒。
tm轉換爲time_t的函數爲
time_t mktime(const tm* timeptr); //將tm時間塊,轉換爲時間戳time_t,得到timeptr表示的協調世界時的時間戳。比如tm包含的時間爲2017年12月1日,9時0分0秒,轉化後得到的是2017年12月1日,9時0分0秒距離1970年1月1日0時0分0秒的秒數。
time_t轉換爲字符串(char *)
char* ctime(const time_t * timep);
tm轉換爲字符串(char*)
char * asctime(const tm* timeptr);