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

Flutter中如何将24/01/2023转为2023-01-24?代码报错求助

解决日期格式转换的FormatException异常

你的问题出在解析日期时用错了DateFormat格式:

  • 源日期字符串是dd/MM/yyyy格式(比如24/01/2023)
  • 你却用了目标格式yyyy-MM-dd的DateFormat去解析,导致解析器在字符串第3位找-,但实际是/,触发FormatException。

正确的做法是分两步:先按源日期格式解析成DateTime对象,再按目标格式转换成字符串。

正确代码示例

// 1. 按源格式解析日期
DateTime parsedDate = DateFormat('dd/MM/yyyy').parse((state as SlotRequestPopUpDataLoadedState).date);
// 2. 按目标格式生成字符串
String formattedDate = DateFormat('yyyy-MM-dd').format(parsedDate);

也可以合并为一行:

String formattedDate = DateFormat('yyyy-MM-dd').format(
  DateFormat('dd/MM/yyyy').parse((state as SlotRequestPopUpDataLoadedState).date)
);

为什么原代码错误

DateFormat('yyyy-MM-dd').add_yMMMd()是将两种格式规则叠加,解析器只会尝试匹配yyyy-MM-dd或yMMMd格式的字符串,和你的源日期格式dd/MM/yyyy完全不匹配,所以必然抛出解析异常。

内容的提问来源于stack exchange,提问作者Srasti Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:31:04