Дни между 2 NSDates в календарном году быстро
Я создаю приложение напоминания о дне рождения. Я хочу, чтобы пользователь мог видеть, сколько дней осталось до следующего дня рождения.
Допустим, у меня естьNSDate()
= 2015-06-30 07:21:47 +0000
ИNSDate
на день рождения =1985-08-29 12:00:00 +0000
Как бы я узнал количество дней до следующего дня рождения? Я использовал что-то вродеэтот который дает отрицательное количество дней с момента фактического начала даты (в тысячах с датами рождения). Затем с этим я добавлю 365 к числовой разнице, пока она не станет положительной, но она все равно возвращает ошибочное число. Я предполагаю из-за високосных лет или что-то.
Есть ли способ для этого я могу реализовать? Каким-то образом выровнять компоненты года, чтобы они всегда сравнивались со следующим днем рождения, а не с первоначальной датой рождения?
Редактировать:
Вот функция, которую я использую:
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
}
С примерами дат, которые я разместил, я бы использовал это так:
// sampleDate = 1985-08-29 12:00:00 +0000
daysBetween(sampleDate, date2: NSDate())
// --> 10897
Положительное или отрицательное число исчисляется тысячами. Я рассчитываю выровнять это количество дней до следующего календарного дня рождения.