如何在flutter中将listString转换为List dateTime?

时间:2019-12-03 11:00:48

标签: flutter

我试图从值列表中计算最大值。为此,当我按下按钮时,我将当前时间保存在字符串列表中。但是要计算最大值,我需要一个DateTime列表,但是sharedpref只能保存listString。因此,我需要将字符串列表转换为日期时间列表。

我搜索提取列表的每个日期之间的最大值(duration)。

示例

var strList =
  [ '2019-12-03 12:00', 
    '2019-12-03 12:15', 
    '2019-12-03 12:20', 
    '2019-12-03 12:11',
 ]


 Output = 15 minutes

我尝试过,但是找不到解决方法

DateTime maxDate;
List<String> stringList = [];
List<DateTime> DateList= [];

  load_max_conso() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {

      stringList= prefs.getStringList("save_max_list",); 
      DateList = stringList.parse('1974-03-20 00:00:00');
      maxDate = DateList[0];
      DateList.forEach((date){
        if(date.isAfter(maxDate)){
          maxDate=date;
        }
      });
      return maxDate;

    });
  }

编辑:

我尝试过

   dateList1 = [ '2019-12-03 12:30', '2019-12-03 12:20', '2019-12-03 12:22', '2019-12-03 12:23', '2019-12-03 12:21', ];
       dateList2= dateList1.map(DateTime.parse);

      dateList3=dateList2.sort((a, b) => a.compareTo(b));

      max = dateList3.fold((max, e) => max.isAfter(e)? max : e);
        min = dateList3.fold((min, e) => min.isAfter(e)? e : min);
       difference='${max.difference(min)}';

但dateList3返回null

1 个答案:

答案 0 :(得分:0)

intl.DateFormat format = intl.DateFormat("yyyy-MM-dd HH:mm:ss");

// this is how you should parse it
for (var string in stringList) {
  stringDate.add(format.parse(string));
}

stringDate = stringList.map((string) => format.parse(string)).toList();