У кого есть решение?
Необходимо получить год. Например: пользователь вводит дату рождения, к ней надо прибавить сто лет и от полученного года вычесть разницу между днем рождения и текущим днем. Получить результат сколько времени осталось до этой даты в годах.
Подсчет в годах
Вы точно правильно сформулировали вопрос? Тут алгоритм такой:
дата рождения = 15 сентября 1990
дата для расчета = дата рождения + 100 лет
разница = сегодня - дата рождения
итоговая дата = дата для расчета - разница
Относительно чего считать оставшееся время? И точно ли в годах, а не днях или месяцах?
Продолжите мой алгоритм похожим образом, а я вам в коде покажу. Просто хоть убей, не могу до конца вопрос понять и относительно чего считать
Тут походу сильно думать не нужно)))
Вопрос на который хочет ответить автор: “Сколько тебе осталось лет до 100”
Нужно получить ответ сколько тебе осталось лет до 100
дата рождения = 15 сентября 1990
дата для расчета = дата рождения + 100 лет / получается 15 сентября 2090
разница = сегодня - дата рождения / получается 28 лет
итоговая дата = дата для расчета - разница / получается 2090 - (1990 + 28) = 72
итоговая в годах = 72 года
“И точно ли в годах, а не днях или месяцах?”
Изначально так и планировал, но голова стала кружиться)). Поэтому решил пока разобраться с годами))
Так и есть. Но мне не с руки гадать, проще написать согласно точной формулировке.
Ок. Сейчас сделаю пример и напишу.
extension Date {
func adding(minutes: Int) -> Date {
return Calendar.current.date(byAdding: .minute, value: minutes, to: self)!
}
func adding(hours: Int) -> Date {
return Calendar.current.date(byAdding: .hour, value: hours, to: self)!
}
func adding(days: Int) -> Date {
return Calendar.current.date(byAdding: .day, value: days, to: self)!
}
func adding(weaks: Int) -> Date {
return Calendar.current.date(byAdding: .day, value: weaks * 7, to: self)!
}
func adding(months: Int) -> Date {
return Calendar.current.date(byAdding: .month, value: months, to: self)!
}
func adding(years: Int) -> Date {
return Calendar.current.date(byAdding: .year, value: years, to: self)!
}
}
let userBirthDayDate = Date().adding(months: -2).adding(days: -15).adding(years: -28) // 15 June 1990 - user's burthday
let after100YearsDate = userBirthDayDate.adding(years: 100) // 15 June 2090
let nowDate = Date() // 31 August 2018
let calendar = Calendar.current
let diffrence = calendar.dateComponents([.year], from: nowDate).year! - calendar.dateComponents([.year], from: userBirthDayDate).year! // 28 years
let result = calendar.dateComponents([.year], from: after100YearsDate).year! - (diffrence + calendar.dateComponents([.year], from: userBirthDayDate).year!)