timeval linux 头文件,Linux C获取时间函数实例

实例详解Linux下C获取时间函数的代码。

一、time

头文件:

#include

原型:

time_t time(time_t *t)

time_t的定义:

typedef __darwin_time_t  time_t;

typedef long __darwin_time_t;

返回值:UTC(coordinated universal time)时间1970年1月1日00时00分00秒(也称为Linux系统的Epoch时间)到当前时刻的秒数

例:1

#include

#include

int main ()

{

time_t seconds;

seconds = time(NULL);

printf("自 1970-01-01 起的小时数 = %ld\n", seconds/3600);

return(0);

}

7570ba6de1cc55abbd1c0d5068d80445.png

二、localtime  localtime_r

头文件:

#include

原型:

struct tm *localtime(const time_t *timep)

原型:

struct tm *localtime_r(const time_t *timep, struct tm *result);

结构体tm

struct tm {

int tm_sec;    /* Seconds (0-60) */

int tm_min;    /* Minutes (0-59) */

int tm_hour;  /* Hours (0-23) */

int tm_mday;  /* Day of the month (1-31) */

int tm_mon;    /* Month (0-11) */

int tm_year;  /* Year - 1900 */

int tm_wday;  /* Day of the week (0-6, Sunday = 0) */

int tm_yday;  /* Day in the year (0-365, 1 Jan = 0) */

int tm_isdst;  /* Daylight saving time */

/* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

};

localtime 与 localtime_r区别

localtime 不是可重入 localtime_r 可重入

例2:

#include

#include

#include

#include

int main(int argc, char *argv[])

{

time_t tNow =time(NULL);

time_t tEnd = tNow + 1800;

//注意下面两行的区别

struct tm* ptm = localtime(&tNow);

struct tm* ptmEnd = localtime(&tEnd);

char szTmp[50] = {0};

strftime(szTmp,50,"%H:%M:%S",ptm);

char szEnd[50] = {0};

strftime(szEnd,50,"%H:%M:%S",ptmEnd);

printf("%s/n",szTmp);

printf("%s/n",szEnd);

return 0;

}

最后出来的结果是:

20:30:32

20:30:32

f816348696019a80aaf87987a9370aca.png

例3:

#include

#include

#include

#include

int main(int argc, char *argv[])

{

time_t tNow =time(NULL);

time_t tEnd = tNow + 1800;

struct tm ptm = { 0 };

struct tm ptmEnd = { 0 };

localtime_r(&tNow, &ptm);

localtime_r(&tEnd, &ptmEnd);

char szTmp[50] = {0};

strftime(szTmp,50,"%H:%M:%S",&ptm);

char szEnd[50] = {0};

strftime(szEnd,50,"%H:%M:%S",&ptmEnd);

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

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

return 0;

}

最后出来的结果是:

20:03:21

20:33:21

861f752f9e4b1ba5dee88059ee0d43a3.png

三、gettimeofday

头文件:

#include

原型:

int gettimeofday(struct timeval*tv, struct timezone *tz)

tv:是保存获取时间结果的结构体

struct timeval{

long int tv_sec; // 秒数

long int tv_usec; // 微秒数

}

tz:用于保存时区结果

struct timezone{

int tz_minuteswest;/*格林威治时间往西方的时差*/

int tz_dsttime;/*DST 时间的修正方式*/

}

返回值:成功返回0,失败返回-1,错误代码保存于errno中

四、mktime

头文件:

#include

原型:

time_t mktime(struct tm *tm)

返回值:1970年1月1日以来持续时间的秒数,发生错误时返回-1。

例4:

#include

#include

int main(void)

{

time_t timep;

struct tm* p;

time(&timep);

printf("time():%d\n",timep);

p=localtime(&timep);

timep=mktime(p);

printf("time()->localtime()->mktime():%d\n",timep);

return 0;

}

输出:

time():1541246772

time()->localtime()->mktime():1541246772

d865be843ef2cb0e0eeb63147f1f6d79.png

0b1331709591d260c1c78e86d0c51c18.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值