Matlab ::更改日期,月份序列日期编号

时间:2017-04-13 12:20:08

标签: matlab simulink

我想在matlab中更改序列日期编号的日,月和年

例如:7.367985930307407e + 05

给了我13-Apr-2017 14:13:57。

我需要: 2017年1月1日 14:13:57

我从simulink模型中获取序列日期编号,其中是matlab emb。代码块:

function t = sysTime

coder.extrinsic('now'); 
t=0;

t = now
end

任何人都可以提供帮助?阅读matlab datenum和现在的文档,但我仍然无法弄明白:(

2 个答案:

答案 0 :(得分:2)

您可以使用datetime对象来更改日期的特定部分

d = 7.367985930307407e+05;

dt = datetime(datevec(d));  
dt.Month = 1;
dt.Day = 1;
%   01-Jan-2017 14:13:57

% And if you need the serial date number back:
result = datenum(dt);

答案 1 :(得分:0)

在函数sysTime中,输出设置为now,它为您提供系统返回的当前时间。请尝试以下方法:

function t = sysTime

coder.extrinsic('now'); 
t=0;

t=datenum(2017,1,1) + rem(now,1);

end

Matlab日期编号是double类型的数字,表示自参考日期以来的天数。因此,小数点前的数字为您提供日期,小数点后的小数字为您提供时间。

使用datenum功能,您可以获得所需日期的日期编号,并添加系统时间的小数部分以获得所需内容。从长远来看,在matlab块中参数化参考日期可能会更好。