Linux应用开发(3):Linux时间操作(time、mktime、localtime等)

2024-04-09 14:36

本文主要是介绍Linux应用开发(3):Linux时间操作(time、mktime、localtime等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 简述

        在Linux系统中,时间操作函数是编程中经常使用的一部分,它们允许程序获取和设置系统时间,以及对时间进行各种处理。以下是一些常用的时间操作函数的详细介绍。

2. 时间操作

(1)time(): 获取1970年1月1日以来的总的秒计数

        time() 函数是时间操作中最基础的函数之一,它返回自1970年1月1日(UTC)以来的秒数。这个时间点也被称为Unix纪元或Epoch。

#include <time.h>time_t time(time_t *timer);

        timer 参数是一个可选的指针,如果提供了这个参数,time() 会将当前的UTC时间存储在 timer 指向的位置。

        函数返回当前的UTC时间(time_t类型),如果出现错误,则返回 -1。

(2)localtime(): 转换为本地时间(本地时区)

        localtime() 函数将UTC时间转换为本地时间,并将其存储在 tm 结构中。

#include <time.h>struct tm *localtime(const time_t *timer);

        struct tm结构体如下。

        timer 参数是一个指向 time_t 类型的指针,指向要转换的UTC时间。

        函数返回一个指向 tm 结构的指针,其中包含了转换后的本地时间信息。

(3)gmtime(): 转换为本地时间(0时区)

        gmtime() 函数将UTC时间转换为本地时间,并将其存储在 tm 结构中。与localtime不同的是,gmtime是转换为0时区的本地时间。

#include <sys/time.h>struct tm *gmtime(const time_t *timer);

(4)mktime():将本地时间转换为UTC时间

        mktime() 函数将本地时间转换为UTC时间,功能上与localtime() 互为逆操作。

#include <time.h>time_t mktime(struct tm *timeptr);

        timeptr 参数是一个指向 tm 结构的指针,该结构包含了本地时间信息。

        函数返回转换后的UTC时间(time_t类型)。如果 tm 结构中的日期无效,则返回 -1。

(5)gettimeofday(): 获取高精度时间

        gettimeofday() 函数用于获取当前时间的更高精度(通常是微秒级)。

#include <sys/time.h>int gettimeofday(struct timeval *tv, struct timezone *tz);struct timeval {time_t tv_sec;     // 秒suseconds_t tv_usec; // 微秒};struct timezone {int tz_minuteswest; // 与UTC的时差(分钟)int tz_dsttime;     // 夏令时信息};

        tv 参数是一个指向 timeval 结构的指针,用于存储当前的时间信息。

        tz 参数是一个可选的指向 timezone 结构的指针,用于存储有关时区和夏令时的信息。

函数返回0表示成功,返回-1表示错误。

(6)settimeofday:设置时间

        settimeofday() 函数用于设置系统时钟的时间。这个函数在大多数系统上已经被废弃,因为它允许未经授权的修改系统时间,可能会带来安全问题。

#include <sys/time.h>int settimeofday(const struct timeval *tv, const struct timezone *tz);

        tv 参数是一个指向 timeval 结构的指针,包含了要设置的新时间。

        tz 参数是一个指向 timezone 结构的指针,包含了时区信息。

        函数返回0表示成功,返回-1表示错误。

这篇关于Linux应用开发(3):Linux时间操作(time、mktime、localtime等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888415

相关文章

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指