linux时间函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、头文件

#include

二、结构体

a)tm结构体

struct tm {

int tm_sec;//秒

int tm_min;//分

int tm_hour;//小时

int tm_mday;//月的第几天

int tm_mon;//月份

int tm_year;//年

int tm_wday;//0~6,星期

int tm_yday;//

int tm_isdst;//

long int tm_gmtoff;//

const char * tm_zone;//时区字符串

};

b)timeval结构体

struct timeval{

long tv_sec;//秒

long tv_usec;//微秒

}

c)timezone结构体

struct timezonel{

int tz_minuteswest;//和Greenwich时间差了多少分钟

int tz_dsttime;//日光节约的时间状态

}

三、例子

a)time + ctime配合,time返回当前时间的秒数,把时间参数存于time_t tiCurrent中

time_t tiCurrent;

int seconds = time(&tiCurrent);// int seconds = time((time_t *)NULL);

printf("%d\n", seconds);//printf("%d\n", (int)tiCurrent);效果是一样的

char *cTimeNow;

cTimeNow = ctime(&tiCurrent);

printf("%s\n", cTimeNow);

b)gettimeofday,获取时间秒数和微妙数,存于struct timeva结构体中

struct timeval tvTime;

gettimeofday(&tvTime, (struct timezone *)0);

printf("%ld\n", _sec);

printf("%ld\n", _usec);

c)time+localtime(用localtime_r代替),类似于与ctime。Localtime把返回值存于结构

体struct tm中,下面的代码与(a)中的代码获得相同的结果

time_t tiCurrent;

int seconds = time(&tiCurrent);

printf("%d\n", seconds);

struct tm *p;

char *wDay[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

p = localtime(&tiCurrent);

printf("%s %d %d %d:%d:%d %d\n", wDay[p->tm_wday], p->tm_mon, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, 1900+p->tm_year);

d)mktime+time+localtime,利用time()取得时间(秒数),利用localtime()转换

成struct tm,再利用mktime()将struct转换成原来的秒数

time_t tiCurrent;

int seconds = time(&tiCurrent);

printf("%d\n", (int)tiCurrent);

char *wDay[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

struct tm *p= localtime(&tiCurrent);

printf("%s %d %d %d:%d:%d %d\n", wDay[p->tm_wday], p->tm_mon, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, 1900+p->tm_year);

time_t tiCurrent1;

tiCurrent1 = mktime(p);

printf("%d\n", (int)tiCurrent1);

e)gmtime,将time_t结构体中的信息转换成真实世界所使用的时间日期标示方法,

将结果由结构体tm返回(转换成真实世界时间的函数:ctime,localtime(与gmtime

的使用方法相同,gmtime是世界时间,时差8小时),asctime(比localtime省事,把时间结构自动存到字符串中,也有时差)),以下三个printf的打印结果是相同的

struct tm *p;

char *wDay[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};

p = localtime(&tiCurrent);

printf("localtime:%s %d %d %d:%d:%d %d\n", wDay[p->tm_wday], p->tm_mon,

p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, 1900+p->tm_year);

struct tm *p1;

p1 = gmtime(&tiCurrent);

printf("gmtime:%s %d %d %d:%d:%d %d\n", wDay[p1->tm_wday], p1->tm_mon,

p1->tm_mday, p1->tm_hour, p1->tm_min, p1->tm_sec, 1900+p1->tm_year);

char *cTimeNow1;

cTimeNow1 = asctime(p);

printf("asctime:%s\n", cTimeNow1);

常用组合:

获取时间:time(秒)+ gmtime(转化成现实世界的时间)+显示

设置时间:已知现实世界的时间+mktime(秒)+通过赋值timeval结构体,调用settimeofday。设置时间通过tm结构体非常方便,但需要注意的是settimeofday()月份的问题,如果要设置1月,那么tm->month = 2;time()和Gettimeofday()得到的时间也是

相关文档
最新文档