web-dev-qa-db-fra.com

Soustraction de deux objets NSDate

Duplicate possible:
Comment obtenir la différence de temps sur iPhone

Je reçois la date et l'heure d'un flux JSON. Je dois trouver la différence entre la date que je reçois dans le fil et la date et l'heure d'aujourd'hui. Des suggestions comment je peux faire ceci?

Je sais que je dois soustraire la date du jour avec celle du flux, mais je ne sais pas comment le faire.

Ex: 

Date du flux: Date: 2011-06-10 15:00:00 +0000 Aujourd'hui: Date: 2011-06-10 14:50:00 +0000

Je dois montrer que la différence est de dix minutes.

Merci!

24
Magnus

Créez deux objets NSDate à partir des chaînes en utilisant le -dateWithString: de NSDate, puis obtenez la différence entre les deux objets NSdate en utilisant 

NSTimeInterval diff = [date2 timeIntervalSinceDate:date1];
53
Sascha

Vous devez convertir la date d'entrée en un objet NSDate avant d'essayer de comparer.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss +0000"];
NSDate *startDate = [dateFormatter dateFromString:yourJSONDateString];
NSDate *endDate = [NSDate date];

CGFloat minuteDifference = [endDate timeIntervalSinceDate:startDate] / 60.0;

Le formateur suppose que le décalage UTC sera toujours égal à zéro. Si ce n'est pas le cas, consultez La page de chaîne de format de date de Microsoft pour connaître les autres codes de format que vous pouvez utiliser.

-

Éditer: la méthode dateWithString que tout le monde a utilisée sera mieux utilisée dans votre cas, mais le formateur de date est nécessaire si la chaîne de format de date que vous obtenez n'est pas tout à fait correcte. Je ne pense pas avoir déjà utilisé une API qui envoie des dates au format correct. Peut-être que je ne suis pas chanceux :-(.

4
kubi

A partir du code ci-dessous, vous aurez une idée pour comparer deux objets NSDate.

NSDate *dateOne = [NSDate dateWithString:@"2011-06-10 15:00:00 +0000"];
NSDate *dateTwo = [NSDate dateWithString:@"2011-06-10 14:50:00 +0000"];

switch ([dateOne compare:dateTwo])
{
    case NSOrderedAscending:
         NSLog(@”NSOrderedAscending”);
         break;
    case NSOrderedSame:
        NSLog(@”NSOrderedSame”);
        break;
    case NSOrderedDescending:
       NSLog(@”NSOrderedDescending”);
       break;
}
0
Jhaliya