如何按月份和年份对数据进行排序?

时间:2020-10-05 14:15:09

标签: flutter datetime

class Object{
DateTime dateTime;
double price;
}
Map<String,double> months;
Map<int,Map<String,double>> years;

我正在接收带有日期时间和价格的对象列表。我想先将对象添加到几个月中,然后再添加到年份中。我很难做到,然后此Map应该表示为折线图。有什么想法吗? 我试图先遍历每个对象,然后将其添加到月份地图中,然后再添加到年份地图中,但是它不起作用。

示例:

Object object1 = Object(DateTime(2020,10,2),2.0);
Object object2 = Object(DateTime(2020,10,2),1.0);
Object object3 = Object(DateTime(2019,10,2),1.0);
Object object4 = Object(DateTime(2020,8,2),2.0);

years = {2019:October:1,2020:October:3,2020:August:2};

预期: 年{2019:October:1,2020:October:3,2020:August:2}

我尝试了什么:

 objects.forEach((element) {
      Map<String, double> newElement = {
        DateTime.fromMillisecondsSinceEpoch(element.date, isUtc: true).toLocal().month.toString():
            element.smsPrice
      };
      months.addAll(newElement);
      Map<int, Map<String, double>> newElement1 = {
        DateTime.fromMillisecondsSinceEpoch(element.date, isUtc: true).toLocal().year: newElement
      };
      years.addAll(newElement1);
    });

outcome:
years {2020:August:1,2019:October:2}

1 个答案:

答案 0 :(得分:0)

尝试使用compareTo方法

 objects = objects.sort((a,b) {
    var adate = a['datetime'] 
     var bdate = b['datetime'] // datetime is your key
     return list.compareTo(bdate);
  });