失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > time time_t tm用法

time time_t tm用法

时间:2018-10-18 09:21:48

相关推荐

time time_t tm用法

最近搞视频检索,涉及到很多时间的计算。顺便记录下一些基本用法。

一、gmtime用法

#include <stdio.h>#include <stdlib.h>#include <time.h>#define PNULL NULLint p_time(time_t t){struct tm *timenow;if (t == -1) {printf("p_time input error. time = -1\n");return;}timenow = gmtime(&(t));if (timenow == PNULL) {return;}printf("%4d.%02d.%02d-%02d:%02d:%02d\n", \timenow->tm_year+1900,timenow->tm_mon+1,timenow->tm_mday,\timenow->tm_hour,timenow->tm_min,timenow->tm_sec);}void main(){time_t test_time;time(&test_time);test_time = test_time + (8*60*60);printf("time = %lu\n", test_time);p_time(test_time);}

运行结果:

root@chenwr-pc:/home/workspace/test/tmp/FAT# dateThu Mar 28 14:52:03 CST root@chenwr-pc:/home/workspace/test/tmp/FAT# gcc time.c -o run && ./runtime = 1553784724.03.28-14:52:04

作用打印出当前时间。

gmtime()将参数test_time所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm 返回。Coordinated Universal Time(UTC):协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT)。比如,中国内地的时间与UTC的时差为+8,也就是UTC+8。美国是UTC-5。time函数用来获取机器时间(UTC)单位为秒数,所有和北京时间差8个时区,因此要加86060。最后通过gmtime来转换。

二、time函数用法

time()函数的用途是返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。

#include <stdio.h>#include <stdlib.h>void main(){time_t t;time(&t);printf("time = %lu\n", t);}

运行结果:

time = 1555576546

tm结构体

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;};

三、ctime用法

函数原型: char *ctime(long time)

函数功能: 得到日历时间

函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年

参数说明: time-该参数应由函数time获得

所属文件: <time.h>

#include <stdio.h>#include <stdlib.h>#include <time.h>void main(){time_t t;time(&t);printf("date and time: %s\n", ctime(&t));}

运行结果:

date and time: Thu Apr 18 16:43:32

四、mktime用法

将时间转换为自1970年1月1日以来逝去时间的秒数,发生错误时返回-1

函数原型:time_t mktime(struct tm * timeptr);

所属文件 #include <time.h>

日期如何转成秒数实例

#include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h>#include <string.h>#define PNULL NULLtypedef signed long INT32S;int p_time(time_t t){struct tm *timenow;if (t == -1) {printf("p_time input error. time = -1\n");return;}timenow = gmtime(&(t));if (timenow == PNULL) {return;}printf("%4d.%02d.%02d-%02d:%02d:%02d\n", \timenow->tm_year+1900,timenow->tm_mon+1,timenow->tm_mday,\timenow->tm_hour,timenow->tm_min,timenow->tm_sec);}time_t date_to_sec(int year, int mon, int day, int hour, int min, int sec){struct tm date ;int time_zone = 8;memset(&date, 0, sizeof(date));date.tm_year = year-1900;date.tm_mon = mon-1;date.tm_mday = day;date.tm_hour = hour+time_zone;date.tm_min = min;date.tm_sec = sec;return mktime(&date);}void main(){int my_time;my_time = date_to_sec(, 3, 20, 18, 10, 6);printf("date sec; %d\n", my_time);p_time(my_ime);}

运行结果:

date sec; 1553105406.03.20-18:10:06

五、参考资料

这篇把常见的关于time的函数用法整理的很清晰

c语言中time函数的用法- wangluojisuan的专栏 - CSDN博客 /wangluojisuan/article/details/7045592/

struct tm 和 time_t 时间和日期的使用方法(转) - 教学博客 - 博客园 /hhpjxbk/archive//10/06/1578385.html

如果觉得《time time_t tm用法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。