Flutter解析'04-09-2021 - 15:00'时报Invalid date format错误如何解决
错误原因
DateTime.parse()方法仅支持解析符合ISO 8601规范的日期字符串,你使用的dd-MM-yyyy - HH:mm属于自定义格式,无法被该方法识别,因此抛出格式无效错误。- 原有代码逻辑顺序错误:需要先通过自定义格式的
DateFormat实例将字符串解析为DateTime对象,再执行时区转换,最后格式化输出,而非先调用DateTime.parse处理自定义格式字符串。
修复后代码
if(dt != 'Not Available'){ // 先按自定义格式解析原始字符串为DateTime对象 DateTime parsedDt = DateFormat('dd-MM-yyyy - HH:mm').parse(dt); // 转换为本地时区后按目标格式输出 return DateFormat('dd-MM-yyyy - HH:mm').format(parsedDt.toLocal()); }else{ return dt; }
可选优化
如果输入和输出的日期格式完全一致,可以复用DateFormat实例减少重复创建:
final customDtFormat = DateFormat('dd-MM-yyyy - HH:mm'); if(dt != 'Not Available'){ return customDtFormat.format(customDtFormat.parse(dt).toLocal()); }else{ return dt; }
注:需确保项目已引入
intl依赖,且DateFormat的导入路径为package:intl/intl.dart。
内容的提问来源于stack exchange,提问作者user16712640
相关产品推荐
相关产品推荐

