#flutter #dart
Вопрос:
У меня есть 2 списка данных. Из первого списка я могу найти свои 2 даты и время.
Первый список данных выглядит следующим образом
"data1": [
{
"tripType": "active",
"dateStart": "2021-05-31T03:02:38.000Z",
"dateEnd": "2021-05-31T03:51:33.000Z",
"start": {
"lon": 66.975478,
"lat": 24.949758,
},
"end": {
"lon": 67.036706,
"lat": 24.827635,
}
}];
Во втором списке у меня есть несколько массивов, в которых указаны дата и время. Я хочу отфильтровать этот список и показать только те массивы, дата и время которых находятся между временем начала и окончания моих первых данных.
Мой второй список выглядит так
"data2": [
{
"id": "3cec02d7-4938-418a-bcdd-c6043154a966",
"eventDate": "2021-06-01T15:54:01.000Z",
"creationDate": "2021-06-01T15:54:06.000Z",
"modifiedDate": "2021-06-01T15:54:06.000Z",
"eventClass": "overspeedevent",
"eventType": "start",
},
{
"id": "3cec02d7-4938-418a-bcdd-c6043154a966",
"eventDate": "2021-07-01T13:54:01.000Z",
"creationDate": "2021-06-01T13:54:06.000Z",
"modifiedDate": "2021-06-01T13:54:06.000Z",
"eventClass": "overspeedevent",
"eventType": "end",
},
{
"id": "3cec02d7-4938-418a-bcdd-c6043154a966",
"eventDate": "2021-06-01T15:54:01.000Z",
"creationDate": "2021-06-01T15:54:06.000Z",
"modifiedDate": "2021-06-01T15:54:06.000Z",
"eventClass": "overspeedevent",
"eventType": "start",
}];
Вы можете видеть в данных 1, которые у меня есть dateStart
, и dateEnd
что мне нужно, так это найти данные 2 между этими датами в данных 2, которые у меня есть eventDate
, мне нужно показать или отфильтровать этот массив и показать только те массивы, которые eventDate
находятся между dateStart
и dateEnd
Ответ №1:
вы можете выполнить итерацию по датам2 и проверить дату с помощью метода compareTo даты после преобразования ее в дату
var startDate = DateTime.parse(data1[0]["dateStart"].toString());
var endDate = DateTime.parse(data1[0]["dateEnd"].toString());
for(var item in data2){
var itemDate = DateTime.parse(item["eventDate"].toString());
if(itemDate.compareTo(startDate) > 0 amp;amp; itemDate.compareTo(endDate) < 0) {
print(item["id"]);
}
}