You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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ß

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:46:53