NSDateComponents gibt ungeradee Ergebnisse
-
30-09-2019 - |
Frage
Ich erstelle eine wöchentliche Kalenderansicht und einen Teil davon ist, den ersten Tag der Woche angezeigt zu berechnen. Ich möchte auch das gespeicherte Datum, die Zeit von der ersten Sekunde an haben, so dass ich, dass hh, um sicherzustellen, ich versuche: mm: ss für das Datum sind alle 00.00.00
.ich den folgenden Code haben, was in Ordnung in den meisten Fällen funktioniert aber gibt scheinbar zufällige Ergebnisse, wenn die Daten sind um den Anfang oder das Ende eines Jahres.
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *comps = [gregorian components:unitFlags fromDate:self.selectedDate];
NSDateComponents *addcomps = [[NSDateComponents alloc] init];
[addcomps setDay:1-[comps weekday]];
NSDate *fixedDate = [appDelegate.gregorian dateByAddingComponents:addcomps toDate:self.selectedDate options:0];
////FIXED DATE IS NOW FIRST DAY OF DISPLAYED WEEK
comps = [appDelegate.gregorian components:unitFlags fromDate:fixedDate]; ///fixedDate = 2010-01-03 02:51:25 -0600
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];
self.savedBeginningDate = [appDelegate.gregorian dateFromComponents:comps]; ///self.savedBeginningDate = 2011-01-09 00:00:00 -0600
Irgendwie die hh Einstellung: mm:. Ss 00:00:00 ändert das Datum vom 3. Januar 2010 bis 11. Januar 2009
Ich habe die Ergebnisse der dateFromComponents als Kommentare zu diesen Zeilen hinzugefügt. Dieses seltsame Verhalten scheint nur, wenn sie um die Jahresmarken geschehen und geschieht nicht für jede andere Woche, dass ich gesehen habe.
Vielen Dank für jede Hilfe!
Lösung
Ich habe dieses herausgefunden: Ich hatte die NSWeekCalendarUnit
von den unitFlags herauszunehmen. Keine Ahnung warum, aber aus irgendeinem Grund mit, dass dort die Daten falsch waren Berechnung!