C语言时间函数
1、time函数
头文件:time.h
函数定义:time_t time (time_t *t)
说明:返回从1970年1月1日的UTC时间从0时0分0妙算起到现在所经过的秒数。
#include<stdio.h>
#include<time.h>
int main(){
long seconds = time(&timep);
printf("%ld ",seconds);
printf("%ld ",timep);
return 0;
}
输出:
1302079744
1302079744
附:time_t 一路追踪发现就是从long类型经过不断的typedef ,#define定义过来的。
2、ctime函数
定义:char *ctime(const time_t *timep);
说明:将参数所指的time_t结构中的信息转换成真实世界的时间日期表示方法,然后将结果以字符串形式返回。这个是本地时间。
#include <stdio.h>
#include<time.h>
int main(void) {
time_t timep;
time(&timep);
printf("%s ",ctime(&timep));
return 0;
}
输出:Wed Apr 6 16:53:35 2011
3、gettime函数
定义:struct tm *gmtime(const time_t *timep);
说明:将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。此函数返回的时间日期未经时区转换,而是UTC时间。struct tm结构的定:
struct tm{
int tm_sec;/*秒数*/
int tm_min; /*分钟*/
int tm_hour;/*小时*/
int tm_mday;/*日期*/
int tm_mon; /*月份*/
int tm_year; /*从1990年算起至今的年数*/
int tm_wday; /*星期*/
int tm_yday; /*从今年1月1日算起至今的天数*/
int tm_isdst; /*日光节约时间的旗标*/
};
#include <stdio.h>
#include<time.h>
int main(void) {
char *wday[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t timep;
struct tm *p;
time(&timep);
p = gmtime(&timep);
printf("%d/%d/%d ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
printf("%s %d:%d:%d ",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
return 0;
}
输出:2011/4/6 Wed 8:59:0
4、 asctime函数
定义:char *asctime(const struct tm *timeptr);
说明:将参数timeptr所指的struct tm结构中的信息转换成真实时间所使用的时间日期表示方法,结果以字符串形态返回。与ctime()函数不同之处在于传入的参数是不同的结构。注意返回的也是UTC时间。
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main(void) {
time_t timep;
time(&timep);
printf("%s ",asctime(gmtime(&timep)));
return EXIT_SUCCESS;
}
输出:Wed Apr 6 09:00:39 2011
5、 localhost函数
struct tm *localhost(const time_t *timep);取得当地目前的时间和日期
#include <stdlib.h>
#include<time.h>
int main(void) {
char *wday[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
time_t timep;
struct tm *p;
time(&timep);
p = localtime(&timep);
printf("%d/%d/%d ",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
printf("%s %d:%d:%d ",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
return EXIT_SUCCESS;
}
输出:2011/4/6 Wed 17:3:0
6、mktime函数
定义:time_t mktime(struct tm *timeptr);
说明:用来将参数timeptr所指的tm结构数据转换成从1970年1月1日的UTC时间从0时0分0妙算起到现在所经过的秒数。
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main(void) {
time_t timep;
struct tm *p;
time(&timep);
printf("time():%ld ",timep);
p = localtime(&timep);
timep = mktime(p);
printf("time()->localtime()->mktime():%ld ",timep);
return EXIT_SUCCESS;
}
输出:time():1302080789
time()->localtime()->mktime():1302080789
7、 gettimeofday函数
定义:int gettimeofday(struct timeval *tv,struct timezone *tz);
说明:把目前的时间由tv所指的结构返回,当地时区信息则放到有tz所指的结构中,
struct timeval{
long tv_sec; /*秒*/
long tv_usec; /*微秒*/
};
struct timezone{
int tz_minuteswest; /*和greenwich时间差了多少分钟*/
int tz_dsttime; /*日光节约时间的状态*/
}
#include <stdlib.h>
#include<time.h>
#include<sys/time.h>
int main(void) {
struct timeval tv;
struct timezone tz;
gettimeofday(&tv,&tz);
printf("tv_sec :%d ",tv.tv_sec);
printf("tv_usec: %d ",tv.tv_usec);
printf("tz_minuteswest:%d ",tz.tz_minuteswest);
printf("tz_dsttime:%d ",tz.tz_dsttime);
return EXIT_SUCCESS;
}
输出:tv_sec :1302081017
tv_usec: 532325
tz_minuteswest:-480
tz_dsttime:0