Domanda

Sto creando una vista settimanale del calendario, e parte di questo è il calcolo del primo giorno della settimana visualizzato. Ho inoltre la data salvata per avere il tempo del primo secondo, quindi sto cercando di garantire che hh: mm: ss per la data sono tutti 00:00:00

.

Ho il seguente codice, che funziona bene nella maggior parte dei casi, ma dà risultati apparentemente casuali quando sono le date in giro per l'inizio o la fine di un anno.

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

impostazione in qualche modo il hh: mm:. Ss 00:00:00 cambia la data dal 3 gennaio 2010 al 11 gennaio 2009

Ho aggiunto i risultati delle dateFromComponents come commenti su queste linee. Questo comportamento strano sembra accadere solo quando intorno i segni anno e non accade per qualsiasi altra settimana che ho visto.

Grazie per qualsiasi aiuto!

È stato utile?

Soluzione

Ho capito questo: ho dovuto prendere la NSWeekCalendarUnit dalle unitFlags. Nessun indizio perché, ma per qualche ragione con quello lì le date sono state calcolando in modo errato!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top