c獲取系統時間及time time_t和gmtime

#define _CRT_SECURE_NO_WARNINGS


#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,

  1. struct  tm{  
  2.        int tm_sec;  
  3.        int tm_min;  
  4.        int tm_hour;  
  5.        int tm_mday;  
  6.        int tm_mon;  
  7.        int tm_year;  
  8.        int tm_wday;  
  9.        int tm_yday;  
  10.        int tm_isdst;  
  11.      }; 

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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章