ios - 如何快速过滤日期数组
问题描述
如何在日期数组下方过滤。我需要从该数组中获取每五分钟的数据。意味着如果我的第一个索引数据是“2021-01-06 10:52:15 +0000”,那么我需要五分钟后从数组中获取第二个数据是“2021-01-06 10:57:15 +0000”。这样我需要每五分钟从下面的数组中获取日期数据。
[2021-01-06 10:52:15 +0000, 2021-01-06 10:52:30 +0000, 2021-01-06 10:52:45 +0000, 2021-01-06 10:53:00 +0000, 2021-01-06 10:53:15 +0000, 2021-01-06 10:53:30 +0000, 2021-01-06 10:53:45 +0000, 2021-01-06 10:54:00 +0000, 2021-01-06 10:54:15 +0000, 2021-01-06 10:54:30 +0000, 2021-01-06 10:54:45 +0000, 2021-01-06 10:55:00 +0000, 2021-01-06 10:55:15 +0000, 2021-01-06 10:55:30 +0000, 2021-01-06 10:55:45 +0000, 2021-01-06 10:56:00 +0000, 2021-01-06 10:56:15 +0000, 2021-01-06 10:56:30 +0000, 2021-01-06 10:56:45 +0000, 2021-01-06 10:57:00 +0000, 2021-01-06 10:57:15 +0000, 2021-01-06 10:57:30 +0000, 2021-01-06 10:57:45 +0000, 2021-01-06 10:58:00 +0000, 2021-01-06 10:58:15 +0000, 2021-01-06 10:58:30 +0000, 2021-01-06 10:58:45 +0000, 2021-01-06 10:59:00 +0000, 2021-01-06 10:59:15 +0000, 2021-01-06 10:59:30 +0000, 2021-01-06 10:59:45 +0000, 2021-01-06 11:00:00 +0000, 2021-01-06 11:00:15 +0000, 2021-01-06 11:00:30 +0000, 2021-01-06 11:00:45 +0000, 2021-01-06 11:01:00 +0000, 2021-01-06 11:01:15 +0000, 2021-01-06 11:01:30 +0000, 2021-01-06 11:01:45 +0000, 2021-01-06 11:02:00 +0000, 2021-01-06 11:02:15 +0000, 2021-01-06 11:02:30 +0000, 2021-01-06 11:02:45 +0000, 2021-01-06 11:05:00 +0000]
这只是数组的一部分。在我的情况下,数组每 15 秒增加一次,因此从服务器获取的日期数据量非常高。
在上面的数组中,如果过滤器记录不可用,则需要从数组中添加下一条记录。例如,如果数组中没有“2021-01-06 10:57:15 +0000”日期和时间,则需要添加“2021 -01-06 10:57:30 +0000" 或 2021-01-06 11:02:15 +0000。
解决方案
首先,您需要创建一个变量来存储以分钟为单位的差异。获取第一个日期作为参考并使用它创建一个集合。然后过滤其余日期,检查参考日期和当前日期之间的分钟部分是否等于差值。如果为真,则增加差值并返回真,否则只返回假。将过滤器的结果添加到单个日期的集合中:
试试这样:
var diff = 5
if let reference = dates.first {
let filtered = [reference] + dates.dropFirst().filter({
if Calendar.current.dateComponents([.minute], from: reference, to: $0).minute! == diff {
diff += 5
return true
}
return false
})
print(filtered) // [2021-01-06 10:52:15 +0000, 2021-01-06 10:57:15 +0000, 2021-01-06 11:02:15 +0000]
}
推荐阅读
- python - “”fullSetup“不是模块的已知成员”错误似乎没有导致它
- android - 共享数据的 Android 应用程序:无法为用户 0 找到提供程序 null;期望为此权限找到一个有效的 ContentProvider
- node.js - Gulp 函数创建一个包含内容的文件
- apache-spark - PySpark textFile 替换文本
- javascript - Gatsby Link 组件有下划线,不知道为什么
- apache - 将特定页面的htaccess url参数重写为子域
- ruby-on-rails - 什么可能导致工厂机器人无法正确关联 Big Sur 中上传的文件字段
- typescript - 如何忽略在 Next.js 中生成 tsconfig.json
- ios - SwiftUI HStack 文本未对齐
- flutter - 使用 Paypal 和 Stripe 的市场