matlab 数值型日期的转换

matlab 数值型日期的转换

我们在用 matlab 做计算时总是难免要对时间进行处理。可能有些人喜欢用 数字去表示时间,比如 20180910 这样的表示方法。当我们读取到这样的时间数据时该如何转换为 matlab 中的时间呢?

通过大家会想到以下的做法,把 20180910 中的年、月、日分别提取出来,像matlab中用 datevec 对时间进行分解一样,然后进行重组就 ok 了。这种方法的代码如下:

close all
clear
clc
% 方法一
daten = 20180910;
y = floor(daten/10000);
m = floor((daten - y*10000) / 100);
d = daten - y*10000 - m*100;
t1 = datetime(y,m,d);

这种方法的确可行,但是未免麻烦用了这么多行代码,在 matlab 中难道没有简洁的做法吗?当然是有的,datetime 函数奥妙无穷,我们可以这样做:

close all
clear
clc
daten = 20180910;
% 方法二
t2 = datetime(daten,'ConvertFrom','yyyymmdd');

t3 = datetime(daten,'ConvertFrom','yyyymmdd','format','yyyy-MM-dd');

方法二只用一行代码就实现了相同功能,至于 t2 和 t3 的差别,就在于一个是默认的datetime格式,另一个则使用了 format 进行指定。

一但我们将数据转换成了 datetime 格式,那么转换成 matlab 中的其他时间数据格式,datestr datenum 之类就轻而易举了。

当然,这边还需要提醒一点,这里输入的 daten 是数值型,请确保数据输入是数值型,否则会出错,我之前经常在这点上犯错。

如果还有更好的方法,请不吝赐教。

评论 2 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

半美人

动力源于鼓励

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值