Linux时间函数有哪些
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇"Linux时间函数有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Linu
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
什么是科技互联网
互联网科技公司简介
华服互联网科技怎么样
广州百单互联网科技有限公司
互联网科技财经
互联网科技有限公司图片
善班互联网科技有限公司
腾讯科技 互联网女皇
沃里互联网科技
汉立互联网科技有限公司联系电话
银川新华互联网科技职业技术培训学校图片
中化能源互联网科技招聘
宁夏众和广鑫互联网科技有限公司
互联网金融中的现代科技
搜狐科技互联网
畅思互联网科技
互联网公司黑科技创始人
互联网企业科技类企业如何做账
半导体是互联网高科技吗
中国新注册互联网科技
有格互联网科技
平安科技 互联网
互联网科技的未来发展
科技互联网的估值
金融科技与互联网金融相同和不同
港股科技和互联网
黑云互联网科技有限公司
从那以后互联网科技有限公司
互联网科技包装股份有限公司上市
玉溪新华互联网科技怎么选