Linux时间函数有哪些
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇"Linux时间函数有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Linu
千家信息网最后更新 2024年11月25日Linux时间函数有哪些
这篇"Linux时间函数有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Linux时间函数有哪些"文章吧。
一、linux时间函数总结
在linux下,常用的获取时间的函数有如下几个:
asctime, ctime, gmtime, localtime, gettimeofday ,
mktime, asctime_r, ctime_r, gmtime_r, localtime_r
二、常用的结构体
(1)struct tm
1 struct tm { 2 int tm_sec; /* seconds */ 3 int tm_min; /* minutes */ 4 int tm_hour; /* hours */ 5 int tm_mday; /* day of the month */ 6 int tm_mon; /* month */ 7 int tm_year; /* year */ 8 int tm_wday; /* day of the week */ 9 int tm_yday; /* day in the year */ 10 int tm_isdst; /* daylight saving time */ 11 }; 12 13 //int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒 14 //int tm_min 代表目前分数,范围0-59 15 //int tm_hour 从午夜算起的时数,范围为0-23 16 //int tm_mday 目前月份的日数,范围01-31 17 //int tm_mon 代表目前月份,从一月算起,范围从0-11 18 //int tm_year 从1900 年算起至今的年数 19 //int tm_wday 一星期的日数,从星期一算起,范围为0-6 20 //int tm_yday 从今年1月1日算起至今的天数,范围为0-365 21 //int tm_isdst 日光节约时间的旗标
(2)struct timeval,struct timezone;
1 struct timeval { 2 time_t tv_sec; /* seconds (秒)*/ 3 suseconds_t tv_usec; /* microseconds(微秒) */ 4 }; 5 struct timezone { 6 int tz_minuteswest; /* minutes west of Greenwich */ 7 int tz_dsttime; /* type of DST correction */ 8 }; 9 int tz_minuteswest; /* 格林威治时间往西方的时差 */ 10 int tz_dsttime; /* 时间的修正方式*/
三、时间函数介绍:
(1)time() 函数获取当前时间
1 SYNOPSIS 2 #include 3 4 time_t time(time_t *t); 5 6 DESCRIPTION 7 time() returns the time as the number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). 8 //此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。 9 RETURN VALUE 10 On success, the value of time in seconds since the Epoch is returned. On error, ((time_t) -1) is returned, and errno is 11 set appropriately. 12 ERRORS 13 EFAULT t points outside your accessible address space. 14 //成功返回秒数,错误则返回(time_t) -1),错误原因存于errno中
eg:
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 time_t seconds; 8 9 seconds = time((time_t *)NULL); 10 printf("%d\n", seconds); 11 12 return 0; 13 }
(2)localtime_r() localtime()取得当地目前时间和日期
函数原型如下:
1 #include 2 3 struct tm *localtime(const time_t *timep); 4 struct tm *localtime_r(const time_t *timep, struct tm *result); 5 6 /*该函数将有time函数获取的值timep转换真实世界所使用的时间日期表示方法,然后将结果由结构tm返回*/ 7 8 /**需要注意的是localtime函数可以将时间转换本地时间,但是localtime函数不是线程安全的。 9 多线程应用里面,应该用localtime_r函数替代localtime函数,因为localtime_r是线程安全的**/
eg:
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 time_t timep; 8 struct tm *p; 9 10 time(&timep); 11 p = localtime(&timep); 12 13 printf("%d-%d-%d %d:%d:%d\n", (1900 + p->tm_year), ( 1 + p->tm_mon), p->tm_mday, 14 (p->tm_hour + 12), p->tm_min, p->tm_sec); 15 16 return 0; 17 }
(3)asctime() asctime_r() 将时间和日期以字符串格式返回‘
函数原型如下:
1 #include 2 3 struct tm *gmtime(const time_t *timep); 4 struct tm *gmtime_r(const time_t *timep, struct tm *result); 5 6 char *asctime(const struct tm *tm); 7 char *asctime_r(const struct tm *tm, char *buf); 8 9 10 /**gmtime是把日期和时间转换为格林威治(GMT)时间的函数。将参数time 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回**/ 11 12 /**asctime 将时间以换为字符串字符串格式返回 **/
eg:
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 time_t timep; 8 time(&timep); 9 10 printf("%s\n", asctime(gmtime(&timep))); 11 12 return 0; 13 }
(4) ctime(),ctime_r() 将时间和日期以字符串格式表示
函数原型如下:
1 #include 2 3 char *ctime(const time_t *timep); 4 char *ctime_r(const time_t *timep, char *buf); 5 6 /**ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回**/
eg:
1 #include 2 #include 3 #include 4 5 int main(void) 6 { 7 time_t timep; 8 9 time(&timep); 10 printf("%s\n", ctime(&timep)); 11 12 return 0; 13 }
(5)mktime() 将时间结构体struct tm的值转化为经过的秒数
函数原型:
1 #include 2 3 time_t mktime(struct tm *tm); 4 5 /**将时间结构体struct tm的值转化为经过的秒数**/
eg:
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 time_t timep; 8 struct tm *p; 9 10 time(&timep); 11 p = localtime(&timep); 12 timep = mktime(p); 13 14 printf("%d\n", timep); 15 16 return 0; 17 }
最后结果可以看出mktime转化后的时间与time函数获取的一样
(6)gettimeofday() 获取当前时间
函数原型如下:
1 #include 2 3 int gettimeofday(struct timeval *tv, struct timezone *tz); 4 5 struct timeval { 6 time_t tv_sec; /* seconds (秒)*/ 7 suseconds_t tv_usec; /* microseconds(微秒) */ 8 }; 9 struct timezone { 10 int tz_minuteswest; /* minutes west of Greenwich */ 11 int tz_dsttime; /* type of DST correction */ 12 }; 13 //gettimeofday函数获取当前时间存于tv结构体中,相应的时区信息则存于tz结构体中 14 //需要注意的是tz是依赖于系统,不同的系统可能存在获取不到的可能,因此通常设置为NULL
eg:
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 struct timeval tv; 8 9 gettimeofday(&tv, NULL); 10 11 printf("tv_sec: %d\n", tv.tv_sec); 12 printf("tv_usec: %d\n", tv.tv_usec); 13 14 return 0; 15 }
以上就是关于"Linux时间函数有哪些"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
时间
函数
结构
日期
范围
内容
原型
字符
字符串
结果
世界
代表
信息
所指
方法
格式
线程
安全
参数
常用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
实用网络技术论文测试
网络安全努力破除什么思维
我的世界基岩版生产服务器招新
业界软件开发和华为的区别
怎么查看sql数据库磁盘
服务器网络流量包的作用
用命令oracle数据库
厦门北大青岛网络技术学校
阿里如何管理数据库
怎样查看服务器的处理器与内核
sql附加数据库语法
中医文化素养数据库
深度学习需要什么数据库
取证服务器
2型网络安全监测装置价格
丹阳素桶网络技术有限公司
hpixel服务器
网络安全检讨书承诺书保证书
绍兴千优网络技术有限公司
局域网内如何连接服务器桌面
学校网络安全事故处置应急演练
数据库加密存储unity c
云服务器安全方向
即时通讯软件开发价格怎么样
网络安全在我身边内容
网易软件开发薪酬杭州
辽宁锦州赛区网络安全有奖
软件开发劳务成本凭证
休斯网络技术
软件开发需要考什么证书吗