当前位置: 首页 > news >正文

【c/c++】获取时间

        在一些应用的编写中我们有时候需要用到时间,或者需要一个“锚点”来确定一些数的值。在c/c++中有两个用来确定时间的函数:time/gettimeofday

一、time

time_t time(time_t *timer);
  • time 函数返回当前时间的时间戳(自 1970 年 1 月 1 日以来经过的秒数)。
  • timer 参数是一个指向 time_t 类型变量的指针,用于存储获取的时间戳。如果传递 NULL,则表示不需要返回时间戳。
  • 在 C 语言中,time 函数用于获取当前的系统时间,以秒为单位,返回自 1970 年 1 月 1 日以来经过的秒数(即 Unix 时间戳)。
  • 在 C++ 语言中,time 函数同样用于获取当前的系统时间,但返回类型是 time_t 类型的值,表示从 1970 年 1 月 1 日以来经过的秒数。
  • 使用 time 函数只需要包含 <time.h> 头文件
#include <stdio.h>
#include <time.h>int main() {// 声明一个变量用于存储时间戳time_t current_time;// 使用 time 函数获取当前时间戳time(&current_time);// 打印获取的时间戳printf("Current timestamp: %ld\n", current_time);return 0;
}

当我们获取到这个time_t类型的数据时其实如果像转换成年份秒的话还是有一些麻烦,所以系统提供了一个叫作localtime的函数

1.2localtime

localtime 函数用于将时间戳转换为本地时间。它接受一个指向 time_t 类型的时间戳的指针,并返回一个指向 struct tm 结构体的指针,该结构体包含了转换后的本地时间信息。

struct tm *localtime(const time_t *timer);
  • timer 是一个指向 time_t 类型的时间戳的指针,表示要转换的时间。
  • 返回值是一个指向 struct tm 结构体的指针,包含了转换后的本地时间信息。

 

struct tm {int tm_sec;     // 秒 [0, 59]int tm_min;     // 分 [0, 59]int tm_hour;    // 时 [0, 23]int tm_mday;    // 一个月中的日 [1, 31]int tm_mon;     // 月 [0, 11]int tm_year;    // 年 - 1900int tm_wday;    // 一周中的日 [0, 6],0 表示星期天int tm_yday;    // 一年中的日 [0, 365]int tm_isdst;   // 夏令时标志:正值表示夏令时,零值表示不确定,负值表示不是夏令时
};

值得注意的是该在早期的 C 语言标准中,为了节省内存空间,结构体 struct tm 中的 tm_year 成员被设计为表示自 1900 年起的年数。这种设计主要是出于历史考虑和对早期计算机内存资源的限制。确实和time的1970不同,这种做法确实增加了一些不便,但在当时的环境下,这种设计被认为是合理的。

所以他的用例如下

#include <stdio.h>
#include <time.h>int main() {// 获取当前时间戳time_t current_time;time(&current_time);// 使用 localtime 函数将时间戳转换为本地时间struct tm *local_time = localtime(&current_time);// 打印转换后的本地时间信息printf("Local time: %d-%02d-%02d %02d:%02d:%02d\n",local_time->tm_year + 1900, local_time->tm_mon + 1, local_time->tm_mday,local_time->tm_hour, local_time->tm_min, local_time->tm_sec);return 0;
}

二、gettimeofday

int gettimeofday(struct timeval *tv, struct timezone *tz);
  • gettimeofday 函数获取当前时间,并将其存储在 struct timeval 结构体中。
  • tv 参数是一个指向 struct timeval 结构体的指针,用于存储获取的时间信息。
  • tz 参数是一个指向 struct timezone 结构体的指针,用于存储时区信息。在实际使用中通常传递 NULL,表示不需要获取时区信息。

 struct timeval 结构体的定义如下:

struct timeval {time_t      tv_sec;     // 秒数suseconds_t tv_usec;    // 微秒数
};struct timezone {int tz_minuteswest;     // 格林尼治时间西部时区和当前时区的分钟差值int tz_dsttime;         // DST(夏令时)是否生效
};
  • gettimeofday 函数提供了更高精度的时间信息,适用于需要更精确计时的场景。
  • 在 C 语言中,需要包含 <sys/time.h> 头文件,并且需要额外定义 struct timeval 结构体。
  • 在 C++ 语言中,同样需要包含 <sys/time.h> 头文件,并且使用 struct timeval 结构体来存储时间信息。

相关文章:

【c/c++】获取时间

在一些应用的编写中我们有时候需要用到时间&#xff0c;或者需要一个“锚点”来确定一些数的值。在c/c中有两个用来确定时间的函数&#xff1a;time/gettimeofday 一、time time_t time(time_t *timer);time 函数返回当前时间的时间戳&#xff08;自 1970 年 1 月 1 日以来经…...

uniapp富文本文字长按选中(用于复制,兼容H5、APP、小程序三端)

方案&#xff1a;使用u-parse的selectable属性 <u-parse :selectable"true" :html"content"></u-parse> 注意&#xff1a;u-parse直接使用是不兼容小程序的&#xff0c;需要对u-parse进行改造&#xff1a; 1. 查看u-parse源码发现小程序走到以…...

常见的几种Web安全问题测试简介

Web项目比较常见的安全问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中Web 里面的html 代码会被执行&#xff0c;从而达到恶意用户的特殊…...

linux信号机制[一]

目录 信号量 时序问题 原子性 什么是信号 信号如何产生 引入 信号的处理方法 常见信号 如何理解组合键变成信号呢&#xff1f; 如何理解信号被进程保存以及信号发送的本质&#xff1f; 为什么要有信号 信号怎么用&#xff1f; 样例代码 core文件有什么用呢&#…...

elementui 中el-date-picker 选择年后输出的是Wed Jan 01 2025 00:00:00 GMT+0800 (中国标准时间)

文章目录 问题分析 问题 在使用 el-date-picker 做只选择年份的控制器时&#xff0c;出现如下问题&#xff1a;el-date-picker选择年后输出的是Wed Jan 01 2025 00:00:00 GMT0800 (中国标准时间)&#xff0c;输出了两次如下 分析 在 el-date-picker 中&#xff0c;我们使用…...

Redis 集群(Cluster)

集群概念 Redis 的哨兵模式&#xff0c;提高了系统的可用性&#xff0c;但是正在用来存储数据的还是 master 和 slave 节点&#xff0c;所有的数据都需要存储在单个 master 和 salve 节点中。 如果数据量很大&#xff0c;接近超出了 master / slave 所在机器的物理内存&#…...

260.【华为OD机试真题】信道分配(贪心算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-信道分配二.解题思路三.题解代码Python题解代码…...

Python打发无聊时光:3.实现简单电路的仿真

看到这个标题肯定有人会问&#xff1a;好好的multisim、 proteus之类的专门电路仿真软件不用&#xff0c;非要写一个简陋的python程序来弄&#xff0c;是不是精神失常了。实际上&#xff0c;我也不知道为什么要这么干&#xff0c;前两篇文章是我实际项目中的一些探索&#xff0…...

MyBatis-Plus:通用分页实体封装

分页查询实体&#xff1a;PageQuery package com.example.demo.demos.model.query;import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.Data; import org.springframework.util.St…...

MVC 、DDD(domain-driven design,软件主动学习业务)、中台、Java SPI(Service Provider Interface)

文章目录 引言I 单体架构DDD实现版本1.1 核心概念1.2 DDD四层架构规范1.3 案例1.4 请求转发流程II 领域服务调用2.1 菱形对称架构2.2 中台III Java SPI3.1 概念3.2 实现原理3.3 例子:本地SPI找服务see alsojava -cp<...

添加环境变量

目录 一、前言二、目的三、添加环境变量的步骤四、检查环境变量是否配置成功 一、前言 在很多地方在下载完软件后都需要添加环境变量方可使用。这里以要在终端使用MySQL为例来说一下&#xff0c;在安装好MySQL8.0版本的前提下&#xff0c;如何添加环境变量。 二、目的 添加环…...

学习Android的第十六天

目录 Android 自定义 Adapter Adapter 接口 SpinnerAdapter ListAdapter BaseAdapter 自定义 BaseAdapter 参考文档 Android ListView 列表控件 ListView 的属性和方法 表头表尾分割线的设置 列表从底部开始显示 android:stackFromBottom 设置点击颜色 cacheColorH…...

若依项目改造

ctrlalt l 格式化项目 alt f6 修改包和import包名 替换com.ruoyi 为 com.cj 替换若依版本为自己的版本 将ruoyi改成自己项目的英文名 修改中文名字 修改文件包名 修改有ruoyi的类名 &#xff1a; 验证码生成器包名修改&#xff1a;...

相机图像质量研究(34)常见问题总结:图像处理对成像的影响--拖影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…...

算法学习系列(三十五):贪心(杂)

目录 引言一、合并果子&#xff08;Huffman树&#xff09;二、排队打水&#xff08;排序不等式&#xff09;三、货仓选址&#xff08;绝对值不等式&#xff09;四、耍杂技的牛&#xff08;推公式&#xff09; 引言 上一篇文章也说过了这个贪心问题没有一个规范的套路和模板&am…...

嵌入式面试:瑞芯微

文章目录 一、2024 秋招1.1 IIC的速率范围 &#xff1a;1.2 linux驱动子系统汇总 &#xff1a;1.3 linux关抢占情况汇总 &#xff1a;1.4 操作或者读写一个文件时&#xff0c;从用户态到内核态再到物理介质的流程(考点&#xff1a;虚拟文件系统) &#xff1a; 一、2024 秋招 1…...

【性能测试】分布式压测之locust和Jmeter的使用

受限于单台机器的配置问题&#xff0c;我们在单台机器上达不到一个很高的压测并发数&#xff0c;那这个时候就需要引入分布式压测 分布式压测原理&#xff1a; 一般通过局域网把不同测试计算机链接到一起&#xff0c;达到测试共享、分散操作、集中管理的目的。 选择一台作为…...

ABC341A-D题解

文章目录 A题目AC Code&#xff1a; B题目AC Code&#xff1a; C题目AC Code&#xff1a; D题目你以为这就完了&#xff1f; 时间复杂度分析&#xff1a;AC Code&#xff1a; E A 题目 这个没什么好说的&#xff0c;就先输出一个 1&#xff0c;再输出 n n n 个 01就大功告成…...

计算机网络——07协议层次及服务模型

协议层次及服务模型 协议层次 网络是一个复杂的系统 网络功能复杂&#xff1a;数字信号的物理信号承载、点到点、路由、rdt、进程区分、应用等现实来看&#xff0c;网络的许多构成元素和设备&#xff1a; 主机路由器各种媒体的链路应用协议硬件&#xff0c;软件 问题是&am…...

Netty Review - NIO空轮询及Netty的解决方案源码分析

文章目录 Pre问题说明NIO CodeNetty是如何解决的&#xff1f;源码分析入口源码分析selectCntselectRebuildSelector Pre Netty Review - ServerBootstrap源码解析 Netty Review - NioServerSocketChannel源码分析 Netty Review - 服务端channel注册流程源码解析 问题说明 N…...

哔哩下载姬(downkyi)全功能指南:从入门到精通的视频下载解决方案

哔哩下载姬(downkyi)全功能指南&#xff1a;从入门到精通的视频下载解决方案 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水…...

OpenClaw安全实践:nanobot权限管理指南

OpenClaw安全实践&#xff1a;nanobot权限管理指南 1. 为什么需要关注OpenClaw的安全配置 去年夏天&#xff0c;我在调试一个自动整理照片的OpenClaw任务时&#xff0c;不小心让AI助手误删了整整一个月的旅行照片。这次惨痛教训让我深刻意识到&#xff1a;给AI开放系统操作权…...

Cobar高可用性实现:心跳检测与故障转移的完整教程

Cobar高可用性实现&#xff1a;心跳检测与故障转移的完整教程 【免费下载链接】cobar a proxy for sharding databases and tables 项目地址: https://gitcode.com/gh_mirrors/co/cobar Cobar作为阿里巴巴开源的分布式数据库中间件&#xff0c;其高可用性实现是保障企业…...

Redux-Thunk单元测试终极指南:如何高效Mock异步操作

Redux-Thunk单元测试终极指南&#xff1a;如何高效Mock异步操作 【免费下载链接】redux-thunk reduxjs/redux-thunk: Redux-Thunk 是一个用于 Redux 的中间件&#xff0c;可以用于处理异步操作和副作用&#xff0c;支持多种异步操作和副作用&#xff0c;如 AJAX&#xff0c;Web…...

FxSound高级功能开发:插件系统与第三方集成技术深度解析

FxSound高级功能开发&#xff1a;插件系统与第三方集成技术深度解析 【免费下载链接】fxsound-app FxSound application and DSP source code 项目地址: https://gitcode.com/gh_mirrors/fx/fxsound-app FxSound是一款专业的数字音频处理软件&#xff0c;其强大的插件系…...

8个智能脚本,让Illustrator设计效率提升10倍

8个智能脚本&#xff0c;让Illustrator设计效率提升10倍 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 设计效率的隐形杀手&#xff1a;你是否也在重复劳动&#xff1f; 每天花费…...

WeeChat终极指南:从零开始掌握轻量级聊天客户端

WeeChat终极指南&#xff1a;从零开始掌握轻量级聊天客户端 【免费下载链接】weechat The extensible chat client. 项目地址: https://gitcode.com/gh_mirrors/we/weechat WeeChat&#xff08;Wee Enhanced Environment for Chat&#xff09;是一个免费、快速且轻量级的…...

保姆级教程:用vLLM在双GPU服务器上部署secGpt14b模型(含tmux后台运行与参数调优)

双GPU服务器实战&#xff1a;vLLM驱动secGpt14b模型高效部署指南 当你面对一台配备双GPU的服务器&#xff0c;如何将secGpt14b这样的百亿参数大模型转化为稳定可用的API服务&#xff1f;这不仅是技术能力的考验&#xff0c;更是资源优化艺术的体现。本文将带你深入vLLM引擎的核…...

突破Windows远程桌面限制:RDP Wrapper多用户并发实战指南

突破Windows远程桌面限制&#xff1a;RDP Wrapper多用户并发实战指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 在远程办公与协作日益普及的今天&#xff0c;Windows远程桌面功能成为连接不同设备的重要桥梁。…...

Java Eclipse JDK 1.8.0_25安装与配置全指南

1. JDK 1.8.0_25的下载与安装 如果你是刚接触Java开发的新手&#xff0c;可能会被各种版本的JDK搞得一头雾水。别担心&#xff0c;JDK 1.8.0_25&#xff08;也就是Java 8的一个子版本&#xff09;至今仍是企业开发中最常用的稳定版本之一。我当年刚开始学Java时&#xff0c;导师…...