如何在Dart中将'Jan 12, 2022'格式的日期字符串转为日期类型?
解决Dart中解析'Jan 12, 2022'格式日期的问题
DateTime.parse()仅支持解析符合ISO 8601标准的日期字符串(如2022-01-12T00:00:00),像Jan 12, 2022这种带英文月份缩写的自定义格式字符串,需要借助intl包的DateFormat类来处理。
具体实现步骤:
添加依赖
在项目的pubspec.yaml中引入intl包:dependencies: flutter: sdk: flutter intl: ^0.18.1 # 可根据最新版本调整执行
dart pub get或flutter pub get完成依赖安装。编写解析代码
导入intl包后,指定对应格式解析目标日期字符串:import 'package:intl/intl.dart'; void main() { String targetDate = 'Jan 12, 2022'; // MMM匹配英文月份缩写,dd匹配两位日期,yyyy匹配四位年份 DateFormat dateFormat = DateFormat('MMM dd, yyyy', 'en_US'); try { DateTime parsedDate = dateFormat.parse(targetDate); print(parsedDate); // 输出:2022-01-12 00:00:00.000 } catch (e) { print('日期解析失败:$e'); } }
补充说明:
- 显式指定
en_USlocale是为了避免系统默认语言不同导致的解析异常,确保英文月份缩写能被正确识别;如果是其他语言的月份格式,只需替换对应的locale参数(如zh_CN对应中文月份)。 - 若需将解析后的
DateTime转回指定格式字符串,可使用dateFormat.format(parsedDate)方法。
内容的提问来源于stack exchange,提问作者Shalini
相关产品推荐
相关产品推荐

