首页 > 系统相关 >Linux应用开发(3):Linux时间操作(time、mktime、localtime等)

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

时间:2024-04-08 18:29:48浏览次数:28  
标签:UTC struct Linux mktime tm 时间 time 函数

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表示错误。

标签:UTC,struct,Linux,mktime,tm,时间,time,函数
From: https://blog.csdn.net/tecsai/article/details/137519129

相关文章

  • Linux curl命令详解
    Linuxcurl命令详解发布时间:2014-10-2710:25:36来源:linux网站作者:linux人命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。语法:#curl[op......
  • Linux基本命令入门详解
    Linux基本命令是Linux系统操作的基础,掌握这些命令对于初学者来说至关重要。下面将详细介绍一些常用的Linux基本命令,并附上实际例子。一、目录操作命令pwd:显示当前所在的目录路径。例子:在终端中输入pwd,将显示当前用户所在的目录路径,如/home/user。cd:切换目录。例子:输......
  • Linux命令之lldptool命令
    LLDP是一个数据链路层发现协议,LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。lldptool工具采用的是LLDP协议,一般我们使用lldptool是为了得到设备的物理拓扑结构以及管理配置信息,比如说,和eth1网口相连的网......
  • Linux之网络排错
    Linux网卡收包流程如下网卡收到数据包将数据包从网卡硬件缓存移动到服务器内存中(DMA方式,不经过CPU)通过硬中断通知CPU处理CPU通过软中断通知内核处理经过TCP/IP协议栈处理应用程序通过read()从socketbuffer读取数据网卡丢包我们先看下ifconfig的输出:#ifconfigeth......
  • linux 环境下 elasticsearch 及 python 相关库的使用
    -elasticsearch是什么?elasticsearch简称es,是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能。-安装1、下载官网下载地址2、解压tarzxvfelasticsearch-8.13.0-linux-x86_64.tar.gz-C/usr/local/3、解决JDK依赖问题新版本的es压缩......
  • Linux历史 centos 7.6安装
    Linux历史 说到操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson、DennisRitchie和DouglasMcIlroy于1969年在AT&T的贝尔实验室开发,那时候Unix可以免费用于学校教学使用......
  • [docker] rockylinux8安装docker
    rockylinux8默认使用podman代替podman,但是在使用podman+portainer时出现不少问题,所以打算安装回docker,在此记录一下安装dockeryuminstall-yhttps://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el8.x86_64.rpmyuminstall-yyum-......
  • 建立时间(setup time)和保持时间(hold time)
    一、基本概念1、建立时间就是时钟触发事件来临之前,数据需要保持稳定的最小时间,以便数据能够被时钟正确的采样。2、保持时间就是时钟触发事件来临之后,数据需要保持稳定的最小时间,以便数据能够被电路准确的传输。可以通俗的理解为:时钟到来之前,数据需要提前准备好;时钟到来之后,数据......
  • Linux中的权限
    Linux中的用户与创建用户的类型超级管理用户:权限最高的用户(uid:0) #uid:是用户的身份证号,Linux系统只认uid普通用户:权限受限的用户(uid:1000-60000)程序用户:不是给人登陆使用:是给程序使用(uid:1-999)一个用户必须有一个基本组,附加组可有可无,也可以有多个基本组:必须要有,有且......
  • 2024最新软件测试【测试理论+ Linux】面试题(内附答案)
    一、测试理论3.1你们原来项目的测试流程是怎么样的?我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段我们的SE会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议,我们会把不明白不理解的需求在会议上说出来,包......