首页 > 解决方案 > Dart 从列表中删除日期范围

问题描述

我有一个日期列表,我想删除特定的日期范围不知道如何删除它。基本上我想在之后一直删除endTime

  var endTime;
  var startTime;
  var today = now.day;
  var startOpeningHr = 06;
  var endOpeningHr = 18;
  endTime = getDateandTiming(today, endOpeningHr);
  startTime = getDateandTiming(today, startOpeningHr);


  var dates = [2021-07-24 14:30:00.000, 2021-07-24 15:00:00.000, 2021-07-24 
             15:30:00.000, 2021-07-24 16:00:00.000, 2021-07-24 16:30:00.000, 2021-07- 
             24 17:00:00.000, 2021-07-24 17:30:00.000, 2021-07-24 18:00:00.000, 2021- 
             07-24 18:30:00.000, 2021-07-24 19:00:00.000, 2021-07-24 19:30:00.000, 
             2021-07-24 20:00:00.000, 2021-07-24 20:30:00.000, 2021-07-24 
             21:00:00.000, 2021-07-24 21:30:00.000, 2021-07-24 22:00:00.000, 2021-07- 
             24 22:30:00.000, 2021-07-24 23:00:00.000, 2021-07-24 23:30:00.000, 2021- 
             07-25 00:00:00.000, 2021-07-25 00:30:00.000, 2021-07-25 01:00:00.000, 
             2021-07-25 01:30:00.000, 2021-07-25 02:00:00.000, 2021-07-25 
             02:30:00.000, 2021-07-25 03:00:00.000]
  
   
getDateandTiming(dateType, startOpening) {
    var checkDate =
        DateTime(now.year, now.month, dateType, startOpening, 0, 0);
    return checkDate;
}

我已经使用了,removewhere但它没有按预期工作

 dates.removeWhere((element){
     if (endTime.isAfter(element)) {
          return null;
     }
     return element;
 });

标签: flutterdart

解决方案


我想出了解决方案,假设您需要在 endTime 之后删除,只需removeWhere以这种方式在循环中使用

 dates.removeWhere((element) {
     if (endTime.isAfter(element)) {
           return false;
     }
     return true;
  });

推荐阅读