You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将List<Map<String, dynamic>>按字符串类型Datetime降序排序?

如何将字符串类型日期的Map列表按降序排序?

针对你给出的_allUsers列表,其中"Clock-In"字段是YYYY-MM-DD HH:MM:SS格式的日期字符串,这里提供两种可靠的排序方案:

方法1:直接比较字符串(高效简洁)

由于你的日期字符串是标准的年-月-日 时:分:秒格式,字符串的字典序和时间顺序完全匹配,因此可以直接通过字符串对比实现排序。注意原列表是final不可变状态,需要先创建副本再操作:

// 创建原列表的副本,避免修改原始数据
List<Map<String, dynamic>> sortedUsers = List.from(_allUsers);

// 按"Clock-In"字段降序排序
sortedUsers.sort((a, b) {
  return b["Clock-In"].compareTo(a["Clock-In"]);
});

方法2:转换为DateTime对象比较(更健壮)

如果需要兼容可能存在的不规范日期格式,建议先将字符串解析为DateTime对象再比较,同时可以处理解析失败的异常情况:

List<Map<String, dynamic>> sortedUsers = List.from(_allUsers);

sortedUsers.sort((a, b) {
  // 尝试解析日期字符串,失败则返回null
  DateTime? dateA = DateTime.tryParse(a["Clock-In"]);
  DateTime? dateB = DateTime.tryParse(b["Clock-In"]);

  // 处理解析失败的条目:将无效日期放到列表末尾
  if (dateA == null) return 1;
  if (dateB == null) return -1;

  // 降序排序,用b的日期对比a的日期
  return dateB.compareTo(dateA);
});

排序结果验证

排序后列表的前几项顺序应为:

  1. Chan Saw Lin(2020-08-23 11:59:05)
  2. Jayden Lee(2020-08-22 08:10:38)
  3. Lim Kok Lin(2020-08-19 11:11:35)
  4. Khaw Tong Lin(2020-08-19 11:10:18)

内容的提问来源于stack exchange,提问作者JEFRI LUQMAN HAKIM JUNAIDE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:55:18