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.