#include <time.h>
#include<stdio.h>
main(){
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
struct tm *p;
//time(&timep);
p = gmtime(&timep);
printf("%d %d %d \n", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday);
printf("%s %d :%d :%d\n", wday[p->tm_wday], 8+p->tm_hour, p->tm_min, p->tm_sec);
}
time()函數,返回一個從1970年1月1日 00:00:00到現在的秒數
time_t time(time_t * t); 當參數爲NULL時直接返回秒數,當然也會將該值寫入t指針指向的地址
gmtime();將time函數得到的秒數轉換成一個UTC時間的結構體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;
- int tm_yday;
- int tm_isdst;
- };
UTC時間轉換成北京時間的話,需要在年數上加1900,月份上加1,小時數加上8
當然同類型的函數還有localtime();得到本地時間,該函數同gmtime函數唯一區別是,在轉換小時數不需要加上8了
關於time_t (轉子百度知道):
time_t實際上就是長整型long int; 如假包換!! 他用來保存從1970年1月1日0時0分0秒到現在時刻的秒數! 用time()這個函數獲取! 對time_t數據類型的值來說,它所表示的時間不能晚於2038年1月18日19時14分07秒。 Visual C++裏有個__time64_t數據類型來保存日曆時間,並通過_time64()函數來獲得日曆時間,這樣就可以通過該數據類型保存3001年1月1日0時0分0秒之前的時間。 附: time_t包含在time.h裏 #ifndef __TIME_T #define __TIME_T typedef long time_t; /* 時間值time_t 爲長整型long int(這裏缺省類型就是int哈,可以省略不寫)的別名*/ #endif
time_t : 先定義一個time_他的變量,然後把變量的地址傳給time_t函數,函數返回距離1970.1.1的秒數,返回的結果存在該變量中。即等價於
time_t a
a=time(&timep);
p = gmtime(&a);