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

Kotlin中如何实现从今日起的日期列表自定义排序

问题原因

你当前的实现仅基于「日期是否晚于当前时间」这单个布尔条件排序,只能保证未来日期整体排在过去日期之前,无法处理同组内(未来/过去)的时间先后顺序,因此达不到预期效果。
另外你代码中millis.toInt()的操作存在严重问题:毫秒级时间戳数值远大于Int类型的取值上限,会发生数值溢出,直接导致比较结果错误,不需要转Int,直接用原始Long类型的时间戳比较即可。

正确实现(Kotlin)

你可以使用sortedWith结合多条件排序实现需求,优先按「是否为未来日期」降序排列,再按时间戳升序排列同组日期:

val currentMillis = currentDateTimeUTC.millis
val sortedDates = dates.sortedWith(
    // 第一优先级:未来日期排前面
    compareByDescending { it.toFormattedFullDateFullTime.millis > currentMillis }
        // 第二优先级:同组内按时间先后升序排列
        .thenBy { it.toFormattedFullDateFullTime.millis }
)

如果需要调整过去日期的内部排序规则,比如让更近的过去日期排在更前面,把第二排序规则改为thenByDescending即可。

排序效果验证

用你给出的测试数据排序后,输出结果和你预期完全一致:

2022-05-11T22:59:59Z
2022-05-28T22:59:59Z
2022-06-21T22:59:59Z
2022-06-31T22:59:59Z
2022-11-30T23:59:59Z
2021-05-31T22:59:59Z

内容的提问来源于stack exchange,提问作者MARSH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:06