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

Flutter中如何将时间转为AM/PM格式?解决格式异常问题

解决Flutter中单独时间字符串转AM/PM格式的问题

你遇到的FormatException是因为DateTime.parse()无法直接解析只有时间部分的字符串(比如09:00:00)——这个方法要求输入符合ISO 8601标准的完整日期时间格式(例如2024-05-20T09:00:00),缺少日期部分就会报错。

下面给你两种可行的解决方案:

方案1:为时间字符串补充默认日期后解析

给你的时间字符串拼接一个固定的日期(比如2020-01-01,日期不影响最终的时间格式化结果),再用DateTime.parse()解析,最后转成AM/PM格式:

final item = snapshot.data[index];
String rawTime = item['time'].toString();
// 拼接默认日期,生成可被parse识别的完整格式
DateTime dateTime = DateTime.parse("2020-01-01 $rawTime");
String formattedTime = DateFormat.jm().format(dateTime);
print(formattedTime); // 输出示例:9:00 AM、12:00 PM

方案2:直接用DateFormat解析时间字符串

利用DateFormat的解析能力,先指定时间格式(Hms对应24小时制的时:分:秒)解析原始时间字符串,再格式化为AM/PM格式:

final item = snapshot.data[index];
String rawTime = item['time'].toString();
// 用Hms格式解析纯时间字符串
DateTime dateTime = DateFormat.Hms().parse(rawTime);
// 转成AM/PM格式
String formattedTime = DateFormat.jm().format(dateTime);
print(formattedTime);

注意:两种方案都需要确保你已经导入了intl包(DateFormat来自这个包),如果还没添加,记得在pubspec.yaml中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.19.0 # 版本号可以替换为最新稳定版

内容的提问来源于stack exchange,提问作者AI.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:57:27