Flutter中GMT日期转本地时区日期报错问题排查
问题原因及解决办法
核心原因
Dart自带的DateTime.parse()方法仅支持有限的几种标准日期格式(比如ISO 8601格式),你从API拿到的「Thu, 13 Oct 2022 00:09:35 GMT」属于RFC 1123格式,不在它的默认支持范围内,因此会抛出格式异常。
解决办法
借助intl包处理这类非标准格式的日期解析,步骤如下:
- 在项目的
pubspec.yaml中添加依赖:
dependencies: intl: ^0.18.1 # 可替换为最新版本
- 在代码中导入并使用:
import 'package:intl/intl.dart'; // 匹配目标日期格式的模板 final dateFormat = DateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", 'en_US'); // 解析GMT日期 DateTime dt = dateFormat.parse("Thu, 13 Oct 2022 00:09:35 GMT"); // 转换为本地时间 final _localTime = dt.toLocal(); print("converted gmt date >> " + dt.toString()); print("local modified date >> "+_localTime.toString());
注意:指定en_US本地化是为了确保英文星期、月份缩写能被正确识别,避免因设备系统语言差异导致解析失败。
内容的提问来源于stack exchange,提问作者Jaimin Modi
相关产品推荐
相关产品推荐

