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!

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top