Dias entre 2 NSDates em um ano civil rápido
Estou criando um aplicativo de lembrete de aniversário. Quero que o usuário possa ver quantos dias faltam para o próximo aniversário de alguém.
Digamos que eu tenho umNSDate()
= 2015-06-30 07:21:47 +0000
E aNSDate
para o aniversário =1985-08-29 12:00:00 +0000
Como obteria o número de dias até o próximo aniversário? Eu usei algo comoesta que fornece um número negativo de dias desde o início real da data (que estão na casa dos milhares com datas de nascimento). Com isso, acrescentaria 365 à diferença numérica até que fosse positiva, mas ainda assim retornasse um número instável. Estou assumindo devido a anos bissextos ou algo assim.
Existe um método para isso que eu possa implementar? De alguma forma, igualar os componentes do ano para que ele esteja sempre comparando a partir do próximo aniversário e não a data de nascimento original?
Editar:
Aqui está a função que estou usando:
func daysBetween(date1: NSDate, date2: NSDate) -> Int {
var calendar: NSCalendar = NSCalendar.currentCalendar()
let date1 = calendar.startOfDayForDate(date1)
let date2 = calendar.startOfDayForDate(date2)
let flags = NSCalendarUnit.CalendarUnitDay
let components = calendar.components(flags, fromDate: date1, toDate: date2, options: nil)
return components.day
}
Com as datas de exemplo que eu publiquei, eu usaria assim:
// sampleDate = 1985-08-29 12:00:00 +0000
daysBetween(sampleDate, date2: NSDate())
// --> 10897
Seja positivo ou negativo, o número está na casa dos milhares. Estou procurando equalizar isso em número de dias para o próximo aniversário do calendário.