Как я могу сгенерировать каждую дату между двумя датами с заданной гранулярностью?
Я хочу сделать эту дополнительную площадку массивом дат, которые должны быть на 00, 15, 30 или 45 м, чтобы не было пробелов. При желании можно установить начальную и конечную даты, которых не было в исходном наборе (поэтому можно указывать даты начала и окончания).
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 */]