flutter 按日期排序arraylist
flutter Sorting arraylist by Date
在我的 streamBuilder 中,我的数组列表包含格式为 (dd-MM-yyyy) 的日期。
我想按升序排列列表。
获取Datasnapshot后在StreamBuilder中使用的代码
Map<dynamic, dynamic> data = snap.data.snapshot.value;
List item = [];
data.forEach(
(index, data) => item.add(
{"key": index, ...data}
)
);
item..sort((a,b)=>a['key'].compareTo(b['key']));
我期待结果
16-06-2020
17-06-2020
18-06-2020
19-06-2020
22-06-2020
2020-04-07
我得到的结果是
04-07-2020
16-06-2020
17-06-2020
18-06-2020
19-06-2020
22-06-2020
您需要将 String
解析为 DateTime
。由于 DateTime parse()
方法不接受您提供的格式的字符串,您可以这样做:
List<String> strings = ['04-07-2020', '17-06-2020', '16-06-2020', '19-06-2020', '18-06-2020', '22-06-2020'];
List<DateTime> dateTimes = [];
strings.forEach((string) {
var splitted = string.split('-');
var day = splitted[0];
var month = splitted[1];
var year = splitted[2];
var formatted = '$year-$month-$day';
dateTimes.add(DateTime.parse(formatted));
});
dateTimes.sort((a, b) => a.compareTo(b));
根据您的结构调整它!
在 Firebase 中将数据存储为时间戳会更简单,然后您可以按此时间戳对其进行排序。
如果您需要将日期格式化为字符串 (dd-MM-yyyy),您只需将其解析为 Datetime 并使用 Intl-Package 将其转换为格式化的字符串。
在我的 streamBuilder 中,我的数组列表包含格式为 (dd-MM-yyyy) 的日期。 我想按升序排列列表。 获取Datasnapshot后在StreamBuilder中使用的代码
Map<dynamic, dynamic> data = snap.data.snapshot.value;
List item = [];
data.forEach(
(index, data) => item.add(
{"key": index, ...data}
)
);
item..sort((a,b)=>a['key'].compareTo(b['key']));
我期待结果 16-06-2020 17-06-2020 18-06-2020 19-06-2020 22-06-2020 2020-04-07
我得到的结果是 04-07-2020 16-06-2020 17-06-2020 18-06-2020 19-06-2020 22-06-2020
您需要将 String
解析为 DateTime
。由于 DateTime parse()
方法不接受您提供的格式的字符串,您可以这样做:
List<String> strings = ['04-07-2020', '17-06-2020', '16-06-2020', '19-06-2020', '18-06-2020', '22-06-2020'];
List<DateTime> dateTimes = [];
strings.forEach((string) {
var splitted = string.split('-');
var day = splitted[0];
var month = splitted[1];
var year = splitted[2];
var formatted = '$year-$month-$day';
dateTimes.add(DateTime.parse(formatted));
});
dateTimes.sort((a, b) => a.compareTo(b));
根据您的结构调整它!
在 Firebase 中将数据存储为时间戳会更简单,然后您可以按此时间戳对其进行排序。 如果您需要将日期格式化为字符串 (dd-MM-yyyy),您只需将其解析为 Datetime 并使用 Intl-Package 将其转换为格式化的字符串。