Tage zwischen 2 NSDates in einem Kalenderjahr schnell

Ich erstelle eine Geburtstagserinnerungs-App. Ich möchte, dass der Benutzer sieht, wie viele Tage bis zum nächsten Geburtstag vergangen sind.

Sagen wir, ich habe einNSDate() = 2015-06-30 07:21:47 +0000

Und dieNSDate zum Geburtstag =1985-08-29 12:00:00 +0000

Wie würde ich die Anzahl der Tage bis zum nächsten Geburtstag erhalten? Ich habe so etwas wie @ verwendDie gibt eine negative Anzahl von Tagen seit dem tatsächlichen Beginn des Datums an (in Tausendern mit Geburtsdatum). Dann würde ich damit 365 zur numerischen Differenz addieren, bis sie positiv ist, aber trotzdem eine Wonky-Zahl zurückgibt. Ich nehme an wegen Schaltjahren oder so.

Gibt es eine Methode, die ich implementieren kann? Irgendwie die Jahreskomponenten ausgleichen, damit es immer vom nächsten Geburtstag und nicht vom ursprünglichen Geburtsdatum abweicht?

Bearbeiten

Hier ist die Funktion, die ich benutze:

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
}

Mit den Beispieldaten, die ich gepostet habe, würde ich es folgendermaßen verwenden:

// sampleDate = 1985-08-29 12:00:00 +0000
daysBetween(sampleDate, date2: NSDate())
// --> 10897

Ob positiv oder negativ, die Zahl liegt in Tausendern. Ich möchte die Anzahl der Tage bis zum nächsten Kalendergeburtstag ausgleichen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage