linux时间函数分析

1、数据结构

A

typedef long time_t;//其值表示为从UTC(coordinated universal time)时间197011000000(也称为Linux系统的Epoch时间)到当前时刻的秒数。由于time_t类型长度的限制,它所表示的时间不能晚于2038119031407秒(UTC)。为了能够表示更久远的时间,可用64或更长的整形数来保存日历时间,这里不作详述。

B

struct tm{
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],0代表星期天,1代表星期1,以此类推*/
int tm_yday;/*从每年的1月1日开始的天数-取值区间为[0, 365],0代表1月1日*/
int tm_isdst;/*夏令时标识符,使用夏令时,tm_isdst为正,不使用夏令时,tm_isdst为0,不了解情况时,tm_isdst为负*/
};
C
Struct tmieval{
time_t tv_sec;/*秒s*/
suseconds_t tv_usec;/*微秒us*/
};
D
structtimespec{
time_t tv_sec;/*秒s*/
long tv_nsec;/*纳秒ns*/
};
E
struct timezone{
int tz_minuteswest;/*miniutes west of Greenwich*/
int tz_dsttime;/*type of DST correction*/
};
2、函数
A

头文件:#include <time.h>
函数定义:time_t time(time_t *timer)
功能描述:该函数返回从1970年1月1日00时00分00秒至今所经过的秒数。如果time_t *timer非空指针,函数也会将返回值存到timer指针指向的内存。
返回值:成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。

time_t seconds;
seconds = time((time_t*)NULL);//获取UTC(coordinated universal time)时间197011000000(也称为Linux系统的Epoch时间)到当前时刻的秒数
B

头文件:#include <time.h>
函数定义:char *ctime(const time_t *timep);
功能描述:ctime( )将参数timep指向的time_t时间信息转换成实际所使用的时间日期表示方法,并以字符串形式返回。字符串格式为:"Wed Jun 20 21:00:00 2012\n"。

time_t timeLong;
char a[50];
timeLong = time((time_t*)NULL);
strcpy(a, ctime(&timeLong));
printf("timeLong = %d\na = %s\n", timeLong, a);
//timeLong = 1435112502
//a = Wed Jun 24 10:21:42 2015
C

头文件:#include <time.h>
函数定义:struct tm *gmtime(const time_t *timep)
功能描述:gmtime( )将参数timep指向的time_t时间信息转换成以tm结构体表示的GMT时间信息,并以struct tm*指针返回。

char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
timep = time(NULL);
struct tm tmm;
tmm = *(gmtime(&timep));
printf("%d-%d-%d ", tmm.tm_year+1900, tmm.tm_mon+1, tmm.tm_mday);
printf("%s %d:%d:%d\n", wday[tmm.tm_wday], tmm.tm_hour, tmm.tm_min, tmm.tm_sec);
//2015-6-24 Wed 2:41:55
D

头文件:#include <time.h>
函数定义:struct tm *localtime(const time_t *timep);
功能描述:localtime( )将参数timep指向的time_t时间信息转换成以tm结构体表示的本地时区时间(如北京时间= GMT+小时)。
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
timep = time(NULL);
struct tm tmm;
tmm = *(localtime(&timep));
printf("%d-%d-%d ", tmm.tm_year+1900, tmm.tm_mon+1, tmm.tm_mday);
printf("%s %d:%d:%d\n", wday[tmm.tm_wday], tmm.tm_hour, tmm.tm_min, tmm.tm_sec);
//2015-6-24 Wed 10:46:46
E

头文件:#include <time.h>
函数定义:time_t mktime(struct tm *p_tm);
功能描述:mktime( )将参数p_tm指向的tm结构体数据转换成从1970年1月1日00时00分00秒至今的GMT时间经过的秒数。
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
timep = time(NULL);
struct tm tmm;
tmm = *(localtime(&timep));
printf("%d-%d-%d ", tmm.tm_year+1900, tmm.tm_mon+1, tmm.tm_mday);
printf("%s %d:%d:%d\n", wday[tmm.tm_wday], tmm.tm_hour, tmm.tm_min, tmm.tm_sec);
time_t newtime_t = mktime(&tmm);
printf("%d\n", newtime_t);
//2015-6-24 Wed 10:51:54
//1435114314
F

头文件:#include <time.h>
函数定义:char *asctime(const struct tm *p_tm);
功能描述:asctime( )将参数p_tm指向的tm结构体数据转换成实际使用的时间日期表示方法,并以字符串形式返回(与ctime函数相同)。字符串格式为:"Wed Jun 20 21:00:00 2012\n"。
char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
timep = time(NULL);
struct tm tmm;
tmm = *(localtime(&timep));
printf("%d-%d-%d ", tmm.tm_year+1900, tmm.tm_mon+1, tmm.tm_mday);
printf("%s %d:%d:%d\n", wday[tmm.tm_wday], tmm.tm_hour, tmm.tm_min, tmm.tm_sec);
strcpy(a, asctime(&tmm));
printf("%s\n", a);
//2015-6-24 Wed 10:55:22
//Wed Jun 24 10:55:22 2015
G

头文件:#include <time.h>
函数定义:double difftime(time_t timep1, time_t timep2);
功能描述:difftime( )比较参数timep1和timep2时间是否相同,并返回之间相差秒数。
time_t timep1, timep2;
timep1 = time(NULL);
sleep(2);
timep2 = time(NULL);
printf("the difference is %f seconds\n", difftime(timep1, timep2));
//the difference is -2.000000 seconds
H

头文件:#include <sys/time.h>
        #include <unistd.h>
函数定义:int gettimeofday(struct timeval *tv, struct timezone *tz);
功能描述:gettimeofday( )把目前的时间信息存入tv指向的结构体,当地时区信息则放到tz指向的结构体。
struct timeval tv;  
struct timezone tz;  
gettimeofday(&tv, &tz);  

I

头文件:#include <time.h>

函数定义:size_t strftime(char *s, size_t max, const char *format,const 

struct tm *tm);

功能描述:输出指定格式字符串例子
char strtime[20]={0};
time_t timep;
struct tm*p_tm;
timep = time(NULL);
p_tm = localtime(&timep);
strftime(strtime,sizeof(strtime),"%Y-%m-%d %H:%M:%S",p_tm);
J

头文件:#include <sys/time.h>
        #include <unistd.h>
函数定义:int settimeofday(const struct timeval *tv, const struct timezone *gz);
功能描述:settimeofday( )把当前时间设成由tv指向的结构体数据。当前地区信息则设成tz指向的结构体数据。
char t_string[] = "2012-04-28 22:30:00";
struct tmtime_tm;
struct timevaltime_tv;
time_t timep;
int ret=0;
sscanf(t_string,"%d-%d-%d %d:%d:%d",&time_tm.tm_year,&time_tm.tm_mon,&time_tm.tm_mday,&time_tm.tm_hour,&time_tm.tm_min,&time_tm.tm_sec);
time_tm.tm_year-=1900;
time_tm.tm_mon-=1;
time_tm.tm_wday=0;
time_tm.tm_yday=0;
time_tm.tm_isdst=0;
timep = mktime(&time_tm);
time_tv.tv_sec=timep;
time_tv.tv_usec=0;
ret = settimeofday(&time_tv,NULL);
if(ret!=0)
{
fprintf(stderr,"settimeofday failed\n");
return -1;
}

 
 
   
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值