[英]Sort list by date flutter
我需要按日期对列表进行排序,但只按第一个数字排序。
我从 JSON 20-JAN-23
得到这种格式
我正在尝试使用model.data.sort((a, b) => b.time..compareTo(a;time!));
我需要按日期对列表进行排序。
我从 JSON 20-JAN-23
得到这种格式
我正在尝试使用model.data.sort((a, b) => b.time..compareTo(a;time!));
但如果年份不同,则仅按天排序。 我需要按完整日期排序。
前任:
20-SEP-20
02-DEC-21
29-JAN-23
12-JUN-20
我的排序是:
02-DEC-21
12-JUN-20
20-SEP-20
29-JAN-23
但我想成为:
12-JUN-20
20-SEP-20
02-DEC-21
29-JAN-23
import 'package:intl/intl.dart';
int sortDates(String a, String b) {
String formatDate(String s) => s.replaceRange(4, 6, s.substring(4, 6).toLowerCase());
DateTime parse(String s) => DateFormat("dd-MMM-yy").parse(formatDate(s));
return parse(a).compareTo(parse(b));
}
...
model.data.sort(sortDates);
...
用这个:
...
int sorterFunction(String a, String b) {
String formatText(String dateAsString) {
final date = dateAsString.substring(0,2);
final month = formatMonth(dateAsString.substring(3,6));
final year = '20${dateAsString.substring(7)}';
return '$date-$month-$year';
}
String formatMonth(String text) {
switch (text) {
case 'JAN': return 'Jan';
case 'FEB': return 'Feb';
case 'MAR': return 'Mar';
case 'APR': return 'Apr';
case 'MAY': return 'May';
case 'JUN': return 'Jun';
case 'JUL': return 'Jul';
case 'AUG': return 'Aug';
case 'SEP': return 'Sep';
case 'OCT': return 'Oct';
case 'NOV': return 'Nov';
case 'DEC': return 'Dec';
default: return 'Jan';
}
}
final dateA = DateFormat('dd-MMM-yy').parse(formatText(a));
final dateB = DateFormat('dd-MMM-yy').parse(formatText(b));
return dateA.compareTo(dateB);
}
...
...
model.data.sort(sorterFunction);
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.