Linux时间函数有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇"Linux时间函数有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Linu
千家信息网最后更新 2025年11月07日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是依赖于系统,不同的系统可能存在获取不到的可能,因此通常设置为NULLeg:
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安全错误
数据库的锁怎样保障安全
深圳市江汉网络技术
服务器维保备件
传奇数据库中幸运属性字符
网络安全与黑客 通识
连不上阿里云数据库
网络安全毕业设计怎么写
应用软件开发行业资产负债率
宜昌安全接入服务器地址
六盘水棋牌软件开发
数据库系统概率名词解释
飞猪电子网络技术
荣耀6x应用市场无法连接服务器
数据库设计技术博客
香港阿里云服务器多少钱一个月
服务器windows虚拟化怎么安装
深圳我爱网络技术有限公司
网络安全为人民靠人民主题宣传语
北京瑞普软件开发有限公司
网络安全法信息泄露责任
承德祥龙网络技术服务有限公司
青少年网络安全意识现状
amd适合哪种服务器系统
万得数据库怎么查银行的资产负债
怎么把数据库查询
如何宣传网络安全教育
软件开发者设备
ipad管理网络安全
湖南众享账本网络技术有限公司
岂凡网络技术有限公司
杭州世优网络技术有限公司介绍