【发布时间】:2019-01-16 21:15:58
【问题描述】:
如何以给定的粒度生成两个日期之间的每个日期?
我想让这个扩展垫成为一个日期数组,它们都必须在 00m、15m、30m 或 45m 处,这样就不会有间隙。 (可选)设置不在原始集合中的开始日期和结束日期(因此您可以有前导日期和尾随日期)。
extension TimeSeries {
var earliest: Date? {
return timeSeries.map { $0.date }.min()
}
var latest: Date? {
return timeSeries.map { $0.date }.max()
}
func pad (to repletion: Int, _ component: Calendar.Component, from: Date? = nil, to: Date? = nil) {
guard let start = from ?? self.earliest else {
print("no start date given and none available")
return
}
guard let end = to ?? self.latest else {
print("no end date given and none available")
return
}
// magic happens here...
}
}
具体来说,给定:
[ Date/* 2018-01-16 01:15:00 */, Date/* 2018-01-16 01:45:00 */]
我希望数组变成:
[ Date/* 2018-01-16 01:15:00 */, Date/* 2018-01-16 01:30:00 */, Date/* 2018-01-16 01:45:00 */]
如果它被称为ts.pad(to: 15, .minutes, from: Date/* 2018-01-16 01:00:00 */, to: Date/* 2018-01-16 02:00:00 */ )
我希望数组变成:
[ Date/* 2018-01-16 01:00:00 */, Date/* 2018-01-16 01:15:00 */, Date/* 2018-01-16 01:30:00 */, Date/* 2018-01-16 01:45:00 */, Date/* 2018-01-16 02:00:00 */]
【问题讨论】:
标签: swift