Matlab如何将当前地区时间转换为epoch时间格式

3 篇文章 0 订阅
2 篇文章 0 订阅

应用背景:

MATLAB与下位机仪器设备的RTC(实时时钟模块)进行通信时,通信的数据传输形式为16进制,并且为了便于操作系统等对时间的调度和使用,采用epoch时间格式进行代码开发便于对记时模块(RTC)等的移植和处理。因此,如何在MATLAB中将当前时间转换为epoch时间格式。


Epoch简介

Epoch是固定在格林尼治时间,即UTC(Universal Time Coordinated)(GMT)时区。同时,也代表从1970 01-01 00:00:00开始的秒数。
目前大多数嵌入式处理器都是32位,以及大部分的UNIX系统也都是用32位元来记录时间,正值表示1970年后,负值表示1970年以前。可以很快的计算出时间领域。
例如:
2^31/86400(s) = 24855.13481(天) ~ 68.0958(年)
1970+68.0958 = 2038.0958
1970-68.0958 = 1901.9042
时间领域为[1901.9042,2038.0958]


解决方案:

Matlab提供了一系列关于时间处理的函数,针对该问题思路是将当前时间与epoch的初始时间做差,将日期差乘以86400(一天的秒数)得出前天epoch时间。Matlab貌似没有直接提供实现转换为epoch时间格式的函数,通过以下函数简介实现该功能求解。

Datetime()函数:获取当前时间点(可指定时区、灵活的输入输出显示格式)如2022-07-31 11:00:00.
Datenum()函数:将日期和时间转换为日期序列值。其中日期序列值表示某个固定的预设日期(0000年1月0日)以来的整个天数及其小数值。
`Datestr()函数:将对应的日期转换为字符串格式,满足datenum函数对于需转换时间的格式要求。

实现逻辑

实现逻辑是将获取当前时间的序列值,以及epoch初始时的日期序列值,然后将两者进行相减,将获得的日期值乘以一天的秒数(86400)即可以获得对应的epoch时间格式。

实现代码如下

%设置命令输出窗口显示格式
format long
%获取当前时间
t=datetime("now")
%将当前时间转换字符形式
d= datenum(t)
t=datestr(t)
InputDate=datenum(t,'dd-mmm-yyyy HH:MM:SS')
% 验证输入时间序列值InputDate转换为年月日依旧正确
% e = datetime(InputDate,'ConvertFrom','datenum')
UnixOrigin=datenum('1970-01-01 00:00:00','yyyy-mm-dd HH:MM:SS')
% 验证日期序列值UnixOrigin转换为日期时间依旧正确
% f = datetime(UnixOrigin,'ConvertFrom','datenum')
EpochSecond=round((InputDate-UnixOrigin)*86400)

总结

本次博文记录使用matlab将当前时间转换为epoch时间形式的思路和方法,记录和分享出来便于以后查看使用,也欢迎大家交流学习和指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值