Flutter:解决ISO日期时间解析错误并拆分为日期与带AM/PM时间
解决ISO日期字符串解析与格式转换问题
针对你遇到的2023-01-25T00:37:00.000Z这类ISO 8601格式的日期字符串解析问题,按以下步骤处理即可拆分出日期和带AM/PM标识的时间:
1. 正确解析ISO格式字符串
Dart的DateTime类原生支持解析标准ISO 8601格式的字符串,无需自定义格式,直接用DateTime.parse()即可:
String isoDateStr = "2023-01-25T00:37:00.000Z"; DateTime dateTime = DateTime.parse(isoDateStr); // 若需要转换为本地时区时间,添加以下代码 // dateTime = dateTime.toLocal();
2. 格式化为目标日期和时间
借助intl包的DateFormat工具,分别格式化日期和带AM/PM的时间:
首先确保项目已添加intl依赖(在pubspec.yaml中配置),然后编写代码:
import 'package:intl/intl.dart'; // 格式化日期为dd-MM-yyyy格式 String formattedDate = DateFormat("dd-MM-yyyy").format(dateTime); // 格式化时间为12小时制并带AM/PM标识 String formattedTime = DateFormat("hh:mm a").format(dateTime);
错误原因说明
- 你之前用
DateFormat("dd-MM-y").parse()解析,是因为指定的格式与ISO字符串结构完全不匹配,导致解析出错误结果; - 直接用
dateFormat.parse()未指定对应ISO格式的模板,自然会抛出格式异常。
内容的提问来源于stack exchange,提问作者rameez khan
相关产品推荐
相关产品推荐

