Вы можете получить текущую минуту, получить остаток от этого значения, деленный на десять, и вычесть его из этого значения.Таким образом, вы получаете последнюю десятую часовую минуту, тогда вам просто нужно установить ее с тем же компонентом часа, чтобы найти первый элемент вашего массива.Далее вы можете заполнить оставшиеся даты, вычтя 10-минутное значение позиции элемента из начальной даты.Попробуйте так:
Xcode 11 • Swift 5.1 (для более старых версий просто добавьте оператор возврата как обычно)
extension Date {
var hour: Int { Calendar.current.component(.hour, from: self) }
var minute: Int { Calendar.current.component(.minute, from: self) }
var previousHourTenth: Date { Calendar.current.date(bySettingHour: hour, minute: minute - minute % 10, second: 0, of: self)! }
func lastNthHourTenth(n: Int) -> [Date] { (0..<n).map { Calendar.current.date(byAdding: .minute, value: -10*$0, to: previousHourTenth)! } }
}
Тестирование игровой площадки
Date() // "Sep 25, 2019 at 10:19 AM"
Date().previousHourTenth // "Sep 25, 2019 at 10:10 AM"
Date().lastNthHourTenth(n: 13) // "Sep 25, 2019 at 10:10 AM", "Sep 25, 2019 at 10:00 AM", "Sep 25, 2019 at 9:50 AM", "Sep 25, 2019 at 9:40 AM", "Sep 25, 2019 at 9:30 AM", "Sep 25, 2019 at 9:20 AM", "Sep 25, 2019 at 9:10 AM", "Sep 25, 2019 at 9:00 AM", "Sep 25, 2019 at 8:50 AM", "Sep 25, 2019 at 8:40 AM", "Sep 25, 2019 at 8:30 AM", "Sep 25, 2019 at 8:20 AM", "Sep 25, 2019 at 8:10 AM"]
Теперь вам просто нужно использовать DateFormatter для отображения тех дат, которые необходимы пользователю.