Сначала вы можете создать объект Date()
, а затем использовать объект Calendar
, чтобы получить значения, необходимые для всех этих вычислений.
let date = Date()
let calendar = Calendar.current
var year = 0
var month = 0
var day = 0
Затем вы можете получить спецификацию c дату, чтобы возвратиться, делая что-то вроде этого.
let toDate = Calendar.current.date(byAdding: .day, value: someDayFutureOrPast, to date)
Как только у вас есть указанная c дата, сохраненная как переменная, вы можете просто извлечь ее из calendar
следующим образом.
let year = calendar.component(.year, from: toDate!)
let month = calendar.component(.month, from: toDate!)
let day = calendar.component(.day, from: toDate!)
Поскольку вы работаете с ячейками, вам нужно разместить метод для получения этого из вашего tableView(cellForRowAt...)
метода где-нибудь или где бы он ни работал.
Вот метод, который будет получить именно то, что вы хотите. Ради простоты я вернул кортеж, но вы можете преобразовать его так, как вам нужно. Извиняюсь за любые синтаксические ошибки. Я не на моей маме c и не рядом со мной.
func getDate(dateFromCurrent: Int) -> (Int, Int, Int) {
let date = Date()
let calendar = Calendar.current
var year = 0
var month = 0
var day = 0
let toDate = Calendar.current.date(byAdding: .day, value: someDayFutureOrPast, to date)
return (calendar.component(.year, from: toDate!),
calendar.component(.month, from: toDate!),
calendar.component(.day, from: toDate!)
}
ПРИМЕЧАНИЕ Вы можете go BACK IN TIME
, изменив someDayFutureOrPast
на отрицательный int.