如何在swift中过滤日期数组



如何筛选日期数组下面的数据。我需要每五分钟从这个数组中获取一次数据。意味着如果我的第一个索引数据是"0";2021-01-06 10:52:15+0000";五分钟后我需要来自阵列的第二个数据是"0";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+000";或2021-01-06 11:02:15+0000。

首先,您需要创建一个变量来以分钟为单位存储差异。获取第一个日期作为参考,并用它创建一个集合。然后过滤其余日期,检查参考日期和当前日期之间的分钟分量是否等于差值。如果为true,则增加差值并返回true,否则只返回false。将筛选结果添加到单个日期的集合中:

尝试如下:

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]
}

最简单的方法是对数组进行迭代。

将初始日期存储在新数组中。

然后对数组进行迭代,并将当前迭代日期元素的时间差与存储在新数组中的最后一个时间差进行比较。

如果时间至少为5分钟,请将其存储在新阵列中,然后继续。

相关内容

  • 没有找到相关文章

最新更新