Question

J'ai deux timevalues ??au format:% H% M% S (E.G.161500)

Ces valeurs sont des entiers textuels.

Existe-t-il une fonction simple dans Cocoa qui calcule la différence entre ces deux entiers en utilisant une échelle de 60 secondes et minutes?

Donc si

time 1 = 161500
time 2 = 171500

timedifference = 003000
Était-ce utile?

La solution

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"HHmmss"];

NSDate *date1 = [dateFormatter dateFromString:@"161500"];
NSDate *date2 = [dateFormatter dateFromString:@"171500"];

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1]; // diff = 3600.0

Autres conseils

La classe pour manipuler les dates est NSDate . La méthode permettant d’obtenir des intervalles de temps est -timeIntervalSinceDate: . Le résultat est une valeur NSTimeInterval , qui est un double représentant l'intervalle en secondes.

Vous pouvez créer un objet NSDate à partir d'un NSString avec + dateWithString: , à condition que votre date soit au format 2001- 03-24 10:45:32 +0600 .

essayez ce code.

- (NSTimeInterval)intervalBetweenDate:(NSDate *)dt1 andDate:(NSDate *)dt2 {

NSTimeInterval interval = [dt2 timeIntervalSinceDate:dt1];
NSLog(@"%f",interval);
return interval;

}

Je créerais une sous-classe NSFormatter pour analyser les valeurs temporelles dans ce format à partir de données d'entrée (vous pouvez en placer une sur un champ de texte pour convertir automatiquement une entrée utilisateur ou l'utiliser pour analyser une source de données dans le code). Demandez-lui de renvoyer le nombre total de secondes sous la forme d'un NSTimeInterval (le double représentant des secondes) encapsulé dans un NSNumber. À partir de là, il est facile de soustraire la différence et de l'afficher à l'aide de la même classe NSFormatter que vous avez créée. Dans l'analyse et l'affichage des valeurs, vous êtes l'unique responsable de l'écriture du code en convertissant les secondes en heures: minutes: secondes ou le format de votre choix. Vous pouvez également convertir ces valeurs en un NSDate, comme le mentionne le mouvement, si cela a du sens pour votre application. Gardez simplement à l'esprit que vous allez toujours stocker la différence de temps à partir d'une date de référence, généralement le 1er janvier 1970 (NSDate a des méthodes pour le faire à votre place).

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