因此,我從一個 API 中獲取了一個促銷串列,該串列具有一個回傳 YYYY-MM-DD或為空dateStart的欄位。現在我想比較/過濾。dateEndStringnull
1- 有 dateStart=YYYY-MM-DD && 有 dateEnd=YYYY-MM-DD - 可以呈現,但如果 dateEnd == 今天或之后,它不會顯示
2- 具有 dateStart=YYYY-MM-DD && 具有 dateEnd=null - 可以在串列中呈現,因為它可能是終身促銷
3- 僅在 dateStart 是今天或已經過去時顯示在串列中
uj5u.com熱心網友回復:
讓我們假設這是你的清單:
List sampleList = [
{"dateStart": "2022-11-18", "dateEnd": "2022-11-22"},
{"dateStart": "2022-11-20", "dateEnd": "2022-11-20"},
{"dateStart": "2022-10-20", "dateEnd": "2022-11-19"},
{"dateStart": "2022-10-20", "dateEnd": null},
];
所以你可以這樣得到你的清單:
var result = sampleList.map((e) {
if (e['dateStart'] != null) {
DateTime startDate =
DateFormat("yyyy-MM-dd").parse(e['dateStart'] ' 23:59');
DateTime? endDate = e['dateEnd'] != null
? DateFormat("yyyy-MM-dd hh:mm").parse(e['dateEnd'] ' 23:59')
: null;
var now = DateTime.now();
if ((startDate.isBefore(now) || startDate == now) &&
(endDate == null || endDate.isBefore(now))) {
return e;
}
}
}).toList();
result.removeWhere((element) => element == null);
print("result = $result");//result = [{dateStart: 2022-10-20, dateEnd: 2022-11-19}, {dateStart: 2022-10-20, dateEnd: null}]
現在您可以使用它result來顯示您的串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/537210.html
標籤:扑镖
