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

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.kler.cn/a/541790.html

相关文章:

  • elasticsearch实战应用从入门到高效使用java集成es快速上手
  • 分治下的快速排序(典型算法思想)—— OJ例题算法解析思路
  • (1/100)每日小游戏平台系列
  • 多头自注意力中的多头作用及相关思考
  • 【AI-27】DPO和PPO的区别
  • Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统
  • 从BERT到ChatGPT:大模型训练中的存储系统挑战与技术发展——论文泛读
  • NCRE全国计算机等级考试二级Python-50道基础编程题【带解析】
  • docker.service job docker.service/start failed with result ‘dependency‘
  • 最新版Chrome浏览器集成ActiveX控件之金山WpsDocFrame控件
  • 错误报告:非正常关机引发OTA升级失败:缓存丢失问题的排查与解决
  • uniapp 使用 npm + easycom 安装 uni-ui遇到的问题
  • 怎麼使用靜態住宅IP進行多社媒帳號管理
  • IDEA右侧看不到Maven窗口
  • 自主智能体:感知;认知与决策;行动;
  • react native学习【9】——动态路由
  • 40环状DNA序列的最小表示法Java版-青训营刷题
  • 计算机毕业设计——Springboot的简历系统
  • 基于JavaWeb的在线美食分享平台(源码+lw+部署文档+讲解),源码可白嫖!
  • Postgresql 开发环境搭建指南(WindowsLinux)
  • Docker使用指南与Dockerfile文件详解:从入门到实战
  • DeepSeek与GPT大语言模型教程
  • 2/11QT
  • DeepSeek有什么技术创新?为什么这么火
  • 组合模式 + 访问者模式:树形结构与复杂操作的最佳拍档
  • 【算法学习】拓扑排序(Topological Sorting)