【问题标题】:Flutter filter list based on last week, last month and last year基于上周、上月和去年的 Flutter 过滤器列表
【发布时间】:2020-09-08 23:25:00
【问题描述】:

我有一个地图列表,其中有一个日期字段。在屏幕中我有过滤选项,我可以根据上周、上个月和去年过滤数据,所以不知道如何达到结果。

下面是我的代码

 _listOfHistory.addAll(
         _listStaticRoundForHistory.
         where((element) {
           final date = element.date;
           return date == date.subtract(Duration(days: 30));
         }
     ).toList());

但很确定这是错误的。

响应列表

[
 {
   "title": "title",
   "details": "details",
   "date": DateTime
 },
 {
   "title": "title",
   "details": "details",
   "date": DateTime
 }
 .
 .
 .
 .
]

【问题讨论】:

  • 您能否提供一个您拥有的数据的小样本示例,并提供一些您想要的输出示例。
  • @julemand101 - 当然我刚刚更新了详细信息
  • “上周”、“上个月”和“去年”是什么意思?一周是-7天吗?一个月呢?如果今天是 5 月 22 日,那么上个月是什么意思,应该是 4 月的数据吗?

标签: flutter dart


【解决方案1】:

我可以根据上周、上个月和去年过滤数据

首先您需要知道今天是哪一天,以便减去天、月或年。

var now = new DateTime.now();
var now_1w = now.subtract(Duration(days: 7)); 
var now_1m = new DateTime(now.year, now.month-1, now.day);
var now_1y = new DateTime(now.year-1, now.month, now.day);

编辑 然后在您的代码中,您只需要评估现在是否在您在上面创建的任何日期之后,例如 1 周:

where((element) {
           final date = element.date;
           return now_1w.isBefore(date);
         }

【讨论】:

  • 感谢您的回答,让我检查一下。
  • 我认为应该是“isBefore”而不是“sAfter”
  • 谢谢你,拯救我的一天!
猜你喜欢
  • 2021-05-11
  • 2021-10-16
  • 2017-12-13
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2017-11-16
  • 2023-03-19
相关资源
最近更新 更多