Question

Je crée une vue calendrier hebdomadaire, et une partie de ce calcul est le premier jour de la semaine affichée. Je veux aussi la date d'enregistrement pour avoir le temps de la première seconde, donc je suis en train de faire en sorte que hh: mm: ss pour la date sont tous 00:00:00

.

Je le code suivant, qui fonctionne très bien dans la plupart des cas, mais donne des résultats apparemment aléatoires lorsque les dates sont vers le début ou la fin d'une année.

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

D'une certaine façon les réglage hh: mm:. Ss 00:00:00 change la date du 3 Janvier 2010 au 11 Janvier, 2009

J'ai ajouté les résultats des dateFromComponents sous forme de commentaires sur ces lignes. Ce comportement étrange ne semble se produire quand autour des marques de l'année et ne se produit pas pour toute autre semaine que je l'ai vu.

Merci pour toute aide!

Était-ce utile?

La solution

J'ai compris cela: je devais prendre le NSWeekCalendarUnit des unitFlags. Aucune idée pourquoi, mais pour une raison quelconque avec ce là les dates calculaient mal!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top