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

Kotlin如何基于创建时间筛选特定日期区间内存在的所有条目?

Kotlin 筛选指定时间区间内存在的条目

首先明确核心逻辑:由于Item创建后会持续存在(无过期时间),我们需要筛选出在[from, to]区间内任意时刻存在过的所有条目。

你当前的代码it.created.isAfter(start) && it.created.isBefore(end)仅能筛选出创建时间严格落在区间内的条目,会漏掉那些在区间开始前就已创建、但在区间内持续存在的条目(比如例子1中的Item1)。

正确的筛选实现

因为条目一旦创建就不会消失,所以只要条目的创建时间不晚于区间结束时间to,它就一定在[from, to]区间内存在过(要么在区间开始前已存在,要么在区间内创建)。唯一需要排除的是创建时间晚于to的条目——这些条目在区间结束后才创建,不会在区间内存在。

对应的Kotlin代码如下:

items.filter { it.created <= end }

针对你的例子验证

  • 调用getItem(from = 3秒, to = 13秒):所有条目的created都≤13秒,因此返回全部4个条目,符合预期。
  • 调用getItem(from = 5秒, to = 9秒):Item1的created=2秒≤9秒,Item2=5秒≤9秒,Item3=9秒≤9秒,Item4=12秒>9秒,因此应返回Item1、Item2、Item3。这里你的例子描述可能存在误差,Item1在5-9秒区间内是存在的,应该被包含。

补充:如果需求是“条目在整个区间内持续存在”

如果你的真实需求是筛选在[from, to]整个区间内都存在的条目(即条目在区间开始前就已创建),那么条件应为条目创建时间不晚于区间开始时间from:

items.filter { it.created <= from }

但这个逻辑下,例子2中的Item3创建时间=9秒>5秒,会被排除,和你给出的例子结果不符,因此这个逻辑应该不是你需要的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:03:07