Reema Balmiki
Reema Balmiki

Reputation: 145

How to Sort the list of map based on date and time in flutter

  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

Answers (1)

Ravi Garg
Ravi Garg

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

Related Questions