您的位置:首页 > 其它

c获取系统时间及time time_t和gmtime

2016-04-04 16:02 429 查看
#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,

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;  

  
4000
     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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c系统时间 time gmtime ti