MATLAB中datetime解析时间序列数据报错问题求助
解决MATLAB datetime解析失败的问题
你碰到的这个错误原因很明确——你指定的日期格式字符串和数据里的实际日期格式完全不匹配!
看你给出的示例数据,日期格式是01.01.1998 00:00,也就是日.月.年 时:分的结构,但你在datetime函数里用的InputFormat是yyyy-MM-dd HH:mm(对应年-月-日 时:分),MATLAB自然没法把01.01.1998解析成yyyy-MM-dd格式,所以报错了。
给你两种简单的解决方案:
方案1:直接在readtable中解析日期(更高效)
不用先把日期读成文本再转换,直接在读取表格的时候就指定正确的日期格式,一步到位:
% 直接读取并解析日期列 T = readtable('Abflussdaten.txt', ... 'Delimiter', ';', ... 'Format', '%{dd.MM.yyyy HH:mm}D %f %f', ... 'VariableNames', {'Datum', 'Q_Kempten', 'Q_Sonthofen'});
这里的%{dd.MM.yyyy HH:mm}D就是告诉MATLAB:第一列是符合日.月.年 时:分格式的日期时间,读进来直接就是datetime类型,省去后续转换步骤。
方案2:修正datetime的InputFormat参数
如果你坚持先读文本再转换,只需要把InputFormat改成和数据匹配的格式即可:
T = readtable('Abflussdaten.txt','DatetimeType','text'); D = T.Datum; % 把InputFormat改成dd.MM.yyyy HH:mm,对应数据里的日期结构 date = datetime(D,'InputFormat','dd.MM.yyyy HH:mm');
小提示
MATLAB的datetime格式符是严格对应的:
dd:两位数字的日期(比如01)MM:两位数字的月份(比如01)yyyy:四位数字的年份(比如1998)HH:24小时制的两位数字小时(比如00)mm:两位数字的分钟(比如00)
以后碰到类似问题,先对照数据里的日期结构,再调整InputFormat的格式字符串就好啦。
内容的提问来源于stack exchange,提问作者Axel.Schweiß
相关产品推荐
相关产品推荐

