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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半美人

动力源于鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值