Matlab 处理时间加减问题

时间:2022-05-16 07:01:15

最近用Matlab写一个程序,其中会将时间和日期存入数据库中,想利用Matlab自带的时间处理函数。

具体而言就是用户给出一个初始时间,我的仿真程序按照一定的步长进行系统仿真(比如对应于现实世界的每5分钟更新系统状态),将新的系统状态存储入MySQL中。

测试代码如下:

% 时间处理
originalTime = '1989-10-10 08:55:20';
% 经过100秒后时间
dt_Temp = datevec(originalTime); % 将时间字符串转换为向量
dt_Temp(6) = dt_Temp(6) + 100; % 加100秒
nowTime = datestr(dt_Temp); % 将时间向量转换回时间字符串

其好处是将相加后的120秒直接变成1分40秒输出。


经过实际测试,上面这段代码的极限是约400,就是如果

dt_Temp(6) = dt_Temp(6) + 500;
就会输出异常,跟踪代码到了较深层结果matlab函数调用了C或者C++编译好的函数,至少进入该函数之前所有变量的值都是正常的。

个人分析应该是其C/C++代码中每一个变量(年 月 日 时 分 秒)具有其合理的范围,具体为什么是400左右也想不懂了。

总之,虽然时分秒的加减相对较容易,但月日由于考虑月份天数和闰年等还是用上面的代码处理较好。