如何在Flutter中基于日期时间对List列表项进行排序
商品列表按日期字段排序实现方案
核心逻辑
- 你使用的
YYYY-MM-DD HH:mm:ss.SSS格式日期字符串,字典序和时间先后顺序完全一致,既可以直接对比字符串排序,也可以转成时间戳/日期对象后对比,后者兼容性更强,可规避特殊格式的排序异常。 - 如果需要按时间倒序排序,调换比较逻辑里的前后元素位置即可。
JavaScript 实现代码
const items = [ { "productName":"Icecream", "date":"2019-10-17 10:06:12.278" }, { "productName":"Juice", "date":"2021-09-20 19:08:16.274" }, { "productName":"Rice", "date":"2020-05-13 08:02:16.177" }, { "productName":"Cheese", "date":"2021-10-23 20:02:16.254" }, { "productName":"Sugar", "date":"2019-11-22 00:00:00.000" }, ]; // 方案1:转日期对象比较,兼容性好 const sortedList = items.sort((a, b) => new Date(a.date) - new Date(b.date)); // 方案2:直接对比字符串,性能更高 // const sortedList = items.sort((a, b) => a.date.localeCompare(b.date));
Python 实现代码
from datetime import datetime items = [ { "productName":"Icecream", "date":"2019-10-17 10:06:12.278" }, { "productName":"Juice", "date":"2021-09-20 19:08:16.274" }, { "productName":"Rice", "date":"2020-05-13 08:02:16.177" }, { "productName":"Cheese", "date":"2021-10-23 20:02:16.254" }, { "productName":"Sugar", "date":"2019-11-22 00:00:00.000" }, ] sorted_list = sorted(items, key=lambda x: datetime.strptime(x['date'], '%Y-%m-%d %H:%M:%S.%f'))
Java 实现代码
import com.alibaba.fastjson.JSONObject; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List; import java.util.Comparator; public class ProductSort { public static void main(String[] args) throws ParseException { List<JSONObject> items = // 初始化你的商品列表 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); // 按日期升序排序 items.sort(Comparator.comparing(item -> { try { return dateFormat.parse(item.getString("date")); } catch (ParseException e) { throw new RuntimeException("日期格式解析异常", e); } })); } }
内容的提问来源于stack exchange,提问作者Muk System
相关产品推荐
相关产品推荐

