Reputation: 145
tdmwinner = [{Title: TDM, Date: 22/07/2020, Time: 06:30 pm, Player1: DeMoNKiNNsØP , Player2: DeMoN羊A͡REŠ , Player3: , Player4: }, {Title: TDM, Date: 22/07/2020, Time: 09:30 pm, Player1: DeMoNKiNNsØP , Player2: DeMoN羊A͡REŠ , Player3: , Player4: }, {Title: TDM, Date: 26/07/2020, Time: 09:30 pm, Player1: DeMoNKiNNsØP , Player2: ĐeMoNツNaVy , Player3: DeMoN羊A͡REŠ , Player4: }]
Here I have a list of winners, where date and time are given. I want to sort that array in descending order based on date and time. Here I have arranged the date in the proper format like (2020-07-22 18:30:00.000) after that I am not getting how to arrange that.
tdmwinner.forEach((element) {
String cdate = element['Date'];
List dater = cdate.split('/').reversed.toList();
String finalDate = dater.join('-');
String ctime = element['Time'].toString().toUpperCase();
String temptime = DateFormat.jm().parse(ctime).toString();
List splitTime = temptime.split(" ");
String finalDateAndTime = finalDate + " " + splitTime[1];
print(finalDateAndTime);
});
Upvotes: 0
Views: 1017
Reputation: 1534
You can do it like this: https://repl.it/repls/EllipticalWingedSpof#main.dart
Complete code is
import 'package:intl/intl.dart';
void main() {
var tdmwinner = [{'Title': 'TDM', 'Date': '22/07/2020', 'Time': '06:30 pm', 'Player1': 'DeMoNKiNNsØP' , 'Player2': 'DeMoN羊A͡REŠ' , 'Player3': '', 'Player4': ''}, {'Title': 'TDM', 'Date': '22/07/2020', 'Time': '09:30 pm', 'Player1': 'DeMoNKiNNsØP' , 'Player2': 'DeMoN羊A͡REŠ' , 'Player3': '', 'Player4': ''}, {'Title': 'TDM', 'Date': '26/07/2020', 'Time': '09:30 pm', 'Player1': 'DeMoNKiNNsØP' , 'Player2': 'ĐeMoNツNaVy' , 'Player3': 'DeMoN羊A͡REŠ' , 'Player4': ''}];
var td = tdmwinner.map((element) {
String cdate = element['Date'];
List dater = cdate.split('/').reversed.toList();
String finalDate = dater.join('-');
String ctime = element['Time'].toString().toUpperCase();
String temptime = DateFormat.jm().parse(ctime).toString();
List splitTime = temptime.split(" ");
String finalDateAndTime = finalDate + " " + splitTime[1];
// print(finalDateAndTime);
DateFormat format = new DateFormat("yyyy-m-dd H:m:s");
DateTime dt = format.parse(finalDateAndTime);
//print(format.parse(finalDateAndTime));
element["DateTime"] = dt.toString();
return element;
}).toList();
td.sort((a,b) {
return DateTime.parse(a["DateTime"]).compareTo(DateTime.parse(b["DateTime"]));
});
print(td);
}
Upvotes: 1