2010-10-10 18 views
0

En objectif-C, je veux déterminer les secondes écoulées à partir d'une chaîne de date comme: "Sat, 09 Oct 2010 06:14:50 +0000"Comment obtenir des secondes écoulées depuis une chaîne de date?

Comment faire? Je me suis perdu dans les descriptions alambiquées de NSDateFormatter.

+0

question en double http://stackoverflow.com/questions/741830/getting-the-time-elapsed-objective-c –

Répondre

3

Cet exemple donne secondes écoulées depuis le temps actuel:

NSString *dateString = @"Sat, 09 Oct 2010 18:14:50 +0000"; 

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss Z"]; 

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[df setLocale:usLocale]; 
[usLocale release]; 

NSDate *date = [df dateFromString:dateString]; 
[df release]; 

NSTimeInterval secondsSinceNow = [date timeIntervalSinceNow]; 

NSLog(@"date = %@", date); 
NSLog(@"secondsSinceNow = %f", secondsSinceNow); 

Notez que la conversion à ce jour échouera depuis « Sat » et « octobre » ne peut pas si la région du téléphone est pas anglophone, signifie la même chose dans une autre langue. Vous pouvez forcer une locale sur la dateFormatter pour éviter cela.

Les caractères à utiliser dans la mise en forme de la date peuvent être trouvés here.

+0

Très - ouais, je suis dans un environnement parlant non-eng (JAPAN). Comment puis-je forcer les paramètres régionaux pour corriger l'erreur? (NSDate renvoie null) – m0rtimer

+0

Ajout du paramètre de paramètres régionaux. – Anna