C语言时间函数
2015-10-31 11:26
281 查看
在调用系统时间处理时间问题时,需要使用时间函数,使用前需要引入头文件time.h。
time函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。参数t是一个指针,如果不是一个空指针,函数也会将返回值存到t指针所指的内存单元中。time_t是“time.h”头文件中定义的一个数据类型,表示一个时间的秒数,相当于一个长整型变量。如果t是一个空指针,函数会返回一个time_t型长整型数。
DEMO:
取当前时间函数gmtime:函数gmtime的作用是将time_t表示秒数的时间转换为人可以理解的时间。这个函数的使用方法如下所示。
从上面的使用方法可知,函数的参数是一个表示当前时间秒数的指针。返回值是一个tm类型的结构体指针。tm结构体是“time.h”头文件中定义的,定义方法和成员如下所示。
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;
};
这些成员表示的含义和范围如下所示。
int tm_sec:代表当前秒数,正常范围是0-59。
int tm_min:代表当前分钟数,正常范围是0-59。
int tm_hour:从午夜算起的小时数,范围是0-23。
int tm_mday:当前月份的日数,范围是1-31。
int tm_mon:代表当前月份,从一月算起,范围是0-11。
int tm_year:从1900年算起至今的年数。
int tm_wday:一星期的日数,从星期一算起,范围是0-6。
int tm_yday:从本年1月1日算起至今的天数,范围为0-365。
int tm_isdst:是不是使用了夏令时间。如果为1表示使用了夏令时,为0则表示没有使用夏令时。
DEMO:
字符串格式时间函数ctime:函数ctime的作用是将一个时间返回成一个可以识别的字符串格式。这个函数的使用方法如下所示。
字符串格式时间函数asctime:函数asctime的作用是将一个tm格式的时间转换为一个字符串格式。这个函数的使用方法如下所示。
取得当地时间函数localtime:函数localtime的作用是返回tm格式的当地时间。与gmtime函数不同的是,gmtime函数返回的是一个UTC时间。localtime时间的使用方法如下所示。
将时间转换成秒数函数mktime:函数mktime的作用是将一个tm结构类型的时间转换成秒数时间。该函数的使用方法如下所示。
DEMO:
int gettimeofday ( struct timeval * tv , struct timezone * tz )
取得目前的时间函数gettimeofday:前面所讲到的时间函数只能把时间精确到秒。如果对时间的处理精度为微秒级,需要使用函数gettimeofday。一微秒等于百万分之一秒。
这个函数的参数是两个结构体指针。这两个结构体的定义如下所示。
struct timeval
{
long tv_sec;
long tv_usec;
};
结构体成员的含义如下所示。
tv_sec:当前时间的秒数。
tv_usec:当前时间的微秒数。
struct timezone{
int tz_minuteswest;
int tz_dsttime;
};
结构体成员的含义如下所示。
tz_minuteswest:与UTC时间相差的分钟数。
tz_dsttime:与夏令时间相差的分钟数。
函数gettimeofday会把当前时间的这些参数返回到这两个结构体指针上。如果处理成功,则返回真值1,否则返回0。这个函数的使用实例如下所示。
DEMO:
设置当前时间函数settimeofday:函数settimeofday的作用是设置当前的系统时间。只有root用户登陆以后才有权限进行这个操作。
1.time函数
time_t time(time_t *t);time函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。参数t是一个指针,如果不是一个空指针,函数也会将返回值存到t指针所指的内存单元中。time_t是“time.h”头文件中定义的一个数据类型,表示一个时间的秒数,相当于一个长整型变量。如果t是一个空指针,函数会返回一个time_t型长整型数。
DEMO:
time_t lt; time(<); printf("Now time:%ld\n",lt);
2.gmtime函数
struct tm *gmtime(time_t *timep);取当前时间函数gmtime:函数gmtime的作用是将time_t表示秒数的时间转换为人可以理解的时间。这个函数的使用方法如下所示。
从上面的使用方法可知,函数的参数是一个表示当前时间秒数的指针。返回值是一个tm类型的结构体指针。tm结构体是“time.h”头文件中定义的,定义方法和成员如下所示。
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;
};
这些成员表示的含义和范围如下所示。
int tm_sec:代表当前秒数,正常范围是0-59。
int tm_min:代表当前分钟数,正常范围是0-59。
int tm_hour:从午夜算起的小时数,范围是0-23。
int tm_mday:当前月份的日数,范围是1-31。
int tm_mon:代表当前月份,从一月算起,范围是0-11。
int tm_year:从1900年算起至今的年数。
int tm_wday:一星期的日数,从星期一算起,范围是0-6。
int tm_yday:从本年1月1日算起至今的天数,范围为0-365。
int tm_isdst:是不是使用了夏令时间。如果为1表示使用了夏令时,为0则表示没有使用夏令时。
DEMO:
struct tm *p_tm; time_t lt; time(<); printf("Now time:%ld\n",lt); p_tm=gmtime(<); printf("%d年%d月%d日 %d:%d:%d\n",p_tm->tm_year+1900,p_tm->tm_mon+1,p_tm->tm_mday,p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);
3.ctime函数
char *ctime(time_t *timep);字符串格式时间函数ctime:函数ctime的作用是将一个时间返回成一个可以识别的字符串格式。这个函数的使用方法如下所示。
4.asctime函数
char * asctime(struct tm * timeptr);字符串格式时间函数asctime:函数asctime的作用是将一个tm格式的时间转换为一个字符串格式。这个函数的使用方法如下所示。
5.localtime函数
struct tm *localtime(time_t * timep);取得当地时间函数localtime:函数localtime的作用是返回tm格式的当地时间。与gmtime函数不同的是,gmtime函数返回的是一个UTC时间。localtime时间的使用方法如下所示。
6.mktime函数
time_t mktime(tm * timeptr);将时间转换成秒数函数mktime:函数mktime的作用是将一个tm结构类型的时间转换成秒数时间。该函数的使用方法如下所示。
DEMO:
struct tm *p_tm; time_t lt; time(<); printf("Now time:%ld\n",lt); p_tm=gmtime(<); printf("%d年%d月%d日 %d:%d:%d\n",p_tm->tm_year+1900,p_tm->tm_mon+1,p_tm->tm_mday,p_tm->tm_hour,p_tm->tm_min,p_tm->tm_sec);
printf(ctime(<));
printf(asctime(p_tm));
p_tm->tm_year=2014-1900; //赋值年份
printf("Pass time:%ld\n",mktime(p_tm));
7.gettimeofday函数
需要引入头文件sys/time.hint gettimeofday ( struct timeval * tv , struct timezone * tz )
取得目前的时间函数gettimeofday:前面所讲到的时间函数只能把时间精确到秒。如果对时间的处理精度为微秒级,需要使用函数gettimeofday。一微秒等于百万分之一秒。
这个函数的参数是两个结构体指针。这两个结构体的定义如下所示。
struct timeval
{
long tv_sec;
long tv_usec;
};
结构体成员的含义如下所示。
tv_sec:当前时间的秒数。
tv_usec:当前时间的微秒数。
struct timezone{
int tz_minuteswest;
int tz_dsttime;
};
结构体成员的含义如下所示。
tz_minuteswest:与UTC时间相差的分钟数。
tz_dsttime:与夏令时间相差的分钟数。
函数gettimeofday会把当前时间的这些参数返回到这两个结构体指针上。如果处理成功,则返回真值1,否则返回0。这个函数的使用实例如下所示。
DEMO:
struct timeval tv; struct timezone tz; gettimeofday(&tv,&tz); printf("Second:%ld,Usecond:%ld\n",tv.tv_sec,tv.tv_usec);
8.settimeofday函数
int settimeofday (struct timeval *tv, struct timezone *tz);设置当前时间函数settimeofday:函数settimeofday的作用是设置当前的系统时间。只有root用户登陆以后才有权限进行这个操作。