2014-05-14 1 views
0

Après avoir comparé deux dates (currentDate et _timerStartDate) Je reçois la sortie suivanteObtention d'une sortie inattendue de NSDateComponents

nstimeinterval: 88.998212 
2014-05-14 14:07:08.284 currentDate: 14-05-2014 14:07:08 
2014-05-14 14:07:08.284 stopDate: 14-05-2014 14:05:39 
2014-05-14 14:07:08.284 hour: 10 

Cela est correct et attendu. Cependant quand je casse timerDate je reçois 10 heures de la NSLog ... Je m'attends à zéro. Qu'est-ce que je fais mal?

Voici mon code:

NSDate *currentDate = [NSDate date]; 
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:_timerStartDate]; 
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"mm:ss"]; 
NSString *timeString=[dateFormatter stringFromDate:timerDate]; 


NSLog(@"nstimeinterval: %f", timeInterval); 

[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; 

NSLog(@"currentDate: %@", [dateFormatter stringFromDate:currentDate]); 
NSLog(@"stopDate: %@", [dateFormatter stringFromDate:_timerStartDate]); 


NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [calendar components: (NSHourCalendarUnit | NSYearCalendarUnit) fromDate:timerDate]; 
NSLog(@"year: %li", (long)components.year); 


NSLog(@"timer: %@", timeString); 

timerTicksForCounter = timeString; 

NSLog(@"hour: %li", (long)components.hour); 
+1

Vous semblez être confus au sujet de l'intention de certaines de ces API. Si tout ce que vous voulez est de quantifier la différence entre deux dates, vous pouvez utiliser la méthode 'components: fromDate: toDate: options:', un la: '[composants calendrier: NSCalendarUnitHour fromDate: _timerStartDate toDate: options currentDate: 0];' – warrenm

Répondre

0

Qu'est-ce que vous êtes en train d'essayer d'accomplir? Pour remplir un NSDateComponents avec le temps écoulé entre deux dates? Dans ce cas, vous voulez probablement -[NSCalendar components:fromDate:toDate:options:], avec la date de début étant votre début, et la date à jour étant la date actuelle lorsque vous arrêtez. En même temps, vous semblez faire beaucoup de mélange de dates compliqué et peut-être inutile.