STM32 Unix时间戳

Unix时间戳

        Unix 时间戳(Unix Timestamp)定义为从UTC/GMT197011000秒开始所经过的秒数,不考虑闰秒

        时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量

        世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间

UTC/GMT

        GMT(Greenwich Mean Time)格林尼治标准时间是一种以地球自转为基础的时间计量系统。它将地球自转一周的时间间隔等分为24小时,以此确定计时标准

        UTC(Universal Time Coordinated)协调世界时是一种以原子钟为基础的时间计量系统。它规定铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9,192,631,770周所持续的时间为1秒。当原子钟计时一天的时间与地球自转一周的时间相差超过0.9秒时,UTC会执行闰秒来保证其计时与地球自转的协调一致

时间戳转换

        C语言的time.h模块提供了时间获取和时间戳转换的相关函数,可以方便地进行秒计数器、日期时间和字符串之间的转换

    秒计数器数据类型

    time_t是__time64_t,而__time64_t是__int64_t,所以time_t实际上就__int64_t,是一个64位有符号的整形数据

日期时间数据类型

        tm_sec表示秒,取值范围0~59

        tm_min表示分钟,取值范围0~59

        tm_hour表示午夜开始的小时,取值范围0~23

        tim_maday表示一个月的几号,取值范围1~31

        tim_mon表示从1月开始的第几个月,取值范围0~11(1月表示0,2月表示1....12月表示11,所以这个值+1表示月份)

        tm_year表示从1900年的第几年(所以这个参数值+1900才是我们所说的年份,这个参数的最小值是70,因为时间戳定义是从1970年开始)

        tm_wday表示从周末开始的星期几,取值范围0~6(0表示周末,1表示周一,2表示周二...6表示周六)

        tm_yday表示从1月1号开始的第几天,取值范围0~365

        tm_isdst表示是否使用夏令时, +1表示使用夏令时,0表示不使用夏令时,-1表示不知道(欧美地区大部分国家,还有其他地区的少部分国家,都还在使用,我国早期也使用过一段时间,但现在已经不用夏令时了)这个东西是为了鼓励大家在夏天早睡早起,节约用电而设计的。

字符串数据类型

char*用来指向表示时间的字符串

函数

                                     作用

time_t time(time_t*);

获取系统时钟

struct tm* gmtime(const time_t*);

秒计数器转换为日期时间(格林尼治时间

struct tm* localtime(const time_t*);

秒计数器转换为日期时间(当地时间)

time_t mktime(struct tm*);

日期时间转换为秒计数器(当地时间

char* ctime(const time_t*);

秒计数器转换为字符串(默认格式)

char* asctime(const struct tm*);

日期时间转换为字符串(默认格式)

size_t strftime(char*, size_t, const char*, const struct tm*);

日期时间转换为字符串(自定义格式)

获取系统时钟

time_t time(time_t*);

秒计数器转换为日期时间

格林尼治时间(伦敦时间)

struct tm* gmtime(const time_t*);

当地时间

struct tm* localtime(const time_t*);

日期时间转换为秒计数器

time_t mktime(struct tm*);

打印的是当地的时间戳

秒计数器转换为字符串

char* ctime(const time_t*);

        默认时间格式(不是北京时间)西方国家习惯的时间格式,中国不用这种格式,所以这个函数用的不多。

日期时间转换为字符串

char* asctime(const struct tm*);

与上一个秒计数器显示的效果一样也是默认格式

日期时间转换为字符串

        自定义格式

size_t strftime(char*, size_t, const char*, const struct tm*);

        可以指定格式,例如%H-%M-%S 小时-分钟-秒,%是占位符,打印时会替换为后面时间的具体值,打印的字符串,通过前两个参数指定到一个数组里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM仓库物品管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码:2.保存物品信息代码:3.删除仓库信息代码: 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SSM框架开发的仓库…

[渗透测试]热门搜索引擎推荐— — shodan篇

[渗透测试]热门搜索引擎推荐— — shodan篇 免责声明:本文仅用于分享渗透测试工具,大家使用时,一定需要遵守相关法律法规。 除了shodan,还有很多其他热门的,比如:fofa、奇安信的鹰图、钟馗之眼等&#xff0…

绕组电感 - Ansys Maxwell 磁通链与电流

在本博客中,我将演示如何使用 Ansys Maxwell 中磁瞬态求解器的磁通链和电流结果来计算绕组电感。Ansys Maxwell 磁瞬态求解器在场计算中考虑了涡流效应,我将展示一种使用磁通链和电流结果来计算绕组电感的简单方法。 实际上,电感是非线性的…

Spring Boot牵手Redisson:分布式锁实战秘籍

一、引言 在当今的分布式系统架构中,随着业务规模的不断扩大和系统复杂度的日益增加,如何确保多个服务节点之间的数据一致性和操作的原子性成为了一个至关重要的问题。在单机环境下,我们可以轻松地使用线程锁或进程锁来控制对共享资源的访问,但在分布式系统中,由于各个服务…

Fiddler Classic(HTTP流量代理+半汉化)

目录 一、关于Fiddler (一) Fiddler Classic (二) Fiddler Everywhere (三) Fiddler Everywhere Reporter (四) FiddlerCore (五) 总结 二、 软件安全性 1. 软件安装包 2. 软件汉化dll 三、安装与半汉化 1. 正常打开安装包点击下一步安装即可,安装路径自…

C++适用于所有输入法的解决方案(切换输入法)

文章目录 1、方法 1:模拟按键切换到英文模式2、🚀 方法 2:直接切换到美式键盘(适用于所有输入法)3、🚀 方法 3:遍历所有输入法,选择第一个英文输入法4、🔥 结论5、&#…

AI大语言模型

一、AIGC和生成式AI的概念 1-1、AIGC Al Generated Content:AI生成内容 1-2、生成式AI:generative ai AIGC是生成式 AI 技术在内容创作领域的具体应用成果。 目前有许多知名的生成式 AI: 文本生成领域 OpenAI GPT 系列百度文心一言阿里通…

Visual Studio Code中文出现黄色框子的解决办法

Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”,往下滑动,找到“Un…

《艾尔登法环》运行时弹窗“由于找不到vcruntime140.dll,无法继续执行代码”要怎么解决?

宝子们,是不是在玩《艾尔登法环》的时候,突然弹出一个提示:“由于找不到vcruntime140.dll,无法继续执行代码”?这可真是让人着急上火!别慌,今天就给大家唠唠这个文件为啥会丢,还有怎…

LabVIEW商业软件开发

在商业软件开发和仪器自动测试领域,LabVIEW以其图形化编程方式、高效的数据采集能力和强大的硬件集成优势,成为众多工程项目的核心开发工具。然而,商业软件的开发远不止编写代码和实现功能那么简单,尤其是在仪器自动测试领域&…

第40天:Web开发-JS应用VueJS框架Vite构建启动打包渲染XSS源码泄露代码审计

#知识点 1、安全开发-VueJS-搭建启动&打包安全 2、安全开发-VueJS-源码泄漏&代码审计 一、Vue搭建创建项目启动项目 1、Vue 框架搭建->基于nodejs搭建,安装nodejs即可 参考:https://cn.vuejs.org/ 已安装18.3或更高版本的Node.js 2、Vue 创建…

6、使用one-api管理统一管理大模型,并开始使用本地大模型

文章目录 本节内容介绍集中接入:将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型:如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…

Winform开发框架(蝇量级) MiniFramework V2.1

C/S框架网与2022年发布的一款蝇量级开发框架,适用于开发Windows桌面软件、数据管理应用系统、软件工具等轻量级软件,如:PLC上位机软件、数据采集与分析软件、或企业管理软件,进销存等。适合个人开发者快速搭建软件项目。 适用开发…

【漫话机器学习系列】087.常见的神经网络最优化算法(Common Optimizers Of Neural Nets)

常见的神经网络优化算法 1. 引言 在深度学习中,优化算法(Optimizers)用于更新神经网络的权重,以最小化损失函数(Loss Function)。一个高效的优化算法可以加速训练过程,并提高模型的性能和稳定…

傅里叶公式推导(一)

文章目录 三角函数系正交证明图观法数学证明法计算当 n不等于m当 n等于m(重点) 其它同理 首先要了解的一点基础知识: 三角函数系 { sin ⁡ 0 , cos ⁡ 0 , sin ⁡ x , cos ⁡ x , sin ⁡ 2 x , cos ⁡ 2 x , … , sin ⁡ n x , cos ⁡ n x ,…

1. 构建grafana(版本V11.5.1)

一、grafana官网 https://grafana.com/ 二、grafana下载位置 进入官网后点击downloads(根据自己的需求下载) 三、grafana安装(点击下载后其实官网都写了怎么安装) 注:我用的Centos,就简略的写下我的操作步…

macOS 上部署 RAGFlow

在 macOS 上从源码部署 RAGFlow-0.14.1:详细指南 一、引言 RAGFlow 作为一款强大的工具,在人工智能领域应用广泛。本文将详细介绍如何在 macOS 系统上从源码部署 RAGFlow 0.14.1 版本,无论是开发人员进行项目实践,还是技术爱好者…

快速集成DeepSeek到项目

DeepSeek API-KEY 获取 登录DeekSeek 官网,进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存,后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码,具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…

保姆级教程Docker部署Zookeeper模式的Kafka镜像

目录 一、安装Docker及可视化工具 二、Docker部署Zookeeper 三、单节点部署 1、创建挂载目录 2、命令运行容器 3、Compose运行容器 4、查看运行状态 5、验证功能 四、部署可视化工具 1、创建挂载目录 2、Compose运行容器 3、查看运行状态 一、安装Docker及可视化工…

Docker容器访问外网:启动时的网络参数配置指南

在启动Docker镜像时,可以通过设置网络参数来确保容器能够访问外网。以下是几种常见的方法: 1. 使用默认的bridge网络 Docker的默认网络模式是bridge,它会创建一个虚拟网桥,将容器连接到宿主机的网络上。在大多数情况下,使用默认的bridge网络配置即可使容器访问外网。 启动…