import 'package:intl/intl.dart';
Intl.defaultLocale = 'en-EN';
final myList = [
'October 2022',
'January 2023',
'December 2022',
'February 2023',
'November 2022'
];
// date format used to parse and format
final DateFormat myDateFormat = DateFormat("MMMM yyyy");
// create a list of DateTime objects from the list of strings
final myDates = myList.map((e) => myDateFormat.parse(e)).toList();
// sort the DateTime objects using milliseconds passed since UNIX epoch
myDates.sort(
(a, b) => a.millisecondsSinceEpoch.compareTo(b.millisecondsSinceEpoch));
// convert back to list of strings
final myDatesAsText = myDates.map((e) => myDateFormat.format(e)).toList();
1条答案
按热度按时间c9x0cxw01#
您可以使用intl包来完成此操作。重要的是要有一个包含这些月份名称的区域设置,例如
en-EN
。因此,首先必须从原始文本值创建日期,然后对这些值进行排序并将其转换回来。
检查tis代码(添加软件包后):
(由于字符串列表中没有日期,因此每个
DateTime
都将是该月的第一天,时间为00:00:00,但不会影响顺序。)