J'ai déjà essayé avec NSDate mais sans chance. Je veux la différence entre par exemple 14:10 et 18:30.obtenir le temps entre deux fois par jour
Heures et minutes.
J'espère que vous pouvez me aider ne devrait pas être compliqué :)
J'ai déjà essayé avec NSDate mais sans chance. Je veux la différence entre par exemple 14:10 et 18:30.obtenir le temps entre deux fois par jour
Heures et minutes.
J'espère que vous pouvez me aider ne devrait pas être compliqué :)
La classe NSDate a une timeIntervalSinceDate méthode qui fait l'affaire. NSTimeInterval est un double qui représente les secondes entre les deux heures.
Vous devez ensuite faire vos propres calculs pour transformer les secondes en heures et minutes. Ensuite, vous devez convertir ces nombres en une chaîne. C'est trivial mais ça revient souvent. Je suggère de créer une classe utilitaire pour le faire et de le garder à portée de main. – TechZen
ok merci! maintenant j'ai les secondes afin d'obtenir des heures je voudrais diviser à travers 3600. puis je reçois 1546521531. Pouvez-vous me donner des conseils s'il vous plaît? – user134282
Voici ma solution rapide:
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"HH:mm"];
NSDate *date1 = [df dateFromString:@"14:10"];
NSDate *date2 = [df dateFromString:@"18:09"];
NSTimeInterval interval = [date2 timeIntervalSinceDate:date1];
int hours = (int)interval/3600; // integer division to get the hours part
int minutes = (interval - (hours*3600))/60; // interval minus hours part (in seconds) divided by 60 yields minutes
NSString *timeDiff = [NSString stringWithFormat:@"%d:%02d", hours, minutes];
merci! mhh le compilateur me donne une erreur que initWithDateFormat ... n'existe pas ... – user134282
désolé, j'ai écrit cela avec le SDK Mac OS. Corrigé pour le SDK iPhone. – amrox
great Code :) Merci beaucoup. – user134282
Il n'y a pas besoin de calculer cela en main, jetez un oeil à NSCalendar
. Si vous voulez obtenir les heures et minutes entre deux dates, utilisez quelque chose comme ceci:
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSDateComponents *components = [gregorianCalendar components:unitFlags
fromDate:firstDate
toDate:otherDate
options:0];
[gregorianCalendar release];
Vous avez maintenant les heures et les minutes NSDateComponents et peut y accéder comme NSIntegers
comme [components hour]
et [components minute]
. Cela fonctionnera aussi pendant des heures entre les jours, les années bissextiles et d'autres choses amusantes.
NSString *duration = [self calculateDuration:oldTime secondDate:currentTime];
- (NSString *)calculateDuration:(NSDate *)oldTime secondDate:(NSDate *)currentTime
{
NSDate *date1 = oldTime;
NSDate *date2 = currentTime;
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int hh = secondsBetween/(60*60);
double rem = fmod(secondsBetween, (60*60));
int mm = rem/60;
rem = fmod(rem, 60);
int ss = rem;
NSString *str = [NSString stringWithFormat:@"%02d:%02d:%02d",hh,mm,ss];
return str;
}
Cela fonctionne pour moi .. Merci beaucoup. . . – iHart
Comment voulez-vous que la différence soit présentée? NSString, NSNumber, int, float, un autre NSDate? – Eimantas
en tant que NSString. – user134282