如何使用Dart/Flutter整理月份列表?

m1m5dgzv  于 2023-03-16  发布在  Flutter
关注(0)|答案(1)|浏览(114)

我的名单如下:
myList =[“2022年10月”、“2023年1月”、“2022年12月”、“2023年2月”、“2022年11月”]
有没有一个函数可以接受这个列表并按月份顺序返回列表,就像这样:
newList =[“2022年10月”、“2022年11月”、“2022年12月”、“2023年1月”、“2023年2月”]
非常感谢你们的帮助🙏

c9x0cxw0

c9x0cxw01#

您可以使用intl包来完成此操作。重要的是要有一个包含这些月份名称的区域设置,例如en-EN
因此,首先必须从原始文本值创建日期,然后对这些值进行排序并将其转换回来。
检查tis代码(添加软件包后):

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();

(由于字符串列表中没有日期,因此每个DateTime都将是该月的第一天,时间为00:00:00,但不会影响顺序。)

相关问题