您的位置:首页 > 编程语言 > C语言/C++

C语言时间函数

2015-10-31 11:26 281 查看
在调用系统时间处理时间问题时,需要使用时间函数,使用前需要引入头文件time.h。

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.h

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:

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用户登陆以后才有权限进行这个操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: