2011-01-25 3 views
4

j'ai une date de JSON, par exemple: 1295804021525, qui est le nombre de millisecondes écoulées depuis 1970.Date JSON NSDate et retour

J'ai écrit le code suivant pour convertir ce nombre en un NSDate:

long long seconds = [[payload valueForKey:@"starttime"]longLongValue]/1000; 
NSDate *somedate = [NSDate dateWithTimeIntervalSince1970:seconds]; 

Qui fonctionne et renvoie la bonne date. D'abord je me demande si c'est la meilleure façon de faire la conversion. Ensuite, je me demande comment retourner au format millisecondes et ensuite mettre dans l'url pour renvoyer au serveur.

J'ai:

long long date = [somedate timeIntervalSince1970] * 1000; 
NSString *urlString = [NSString stringWithFormat:@"http://someurl?since=%qi",date]; 

Encore une fois cela semble fonctionner, mais je me demandais comment je pourrais obtenir les mêmes fonctionnalités en utilisant NSNumber.

+0

Avez-vous besoin de '-valueForKey:'? Pourquoi pas '-objectForKey:' à la place? –

+0

'payload' dans ce cas est un' NSArray' pas 'NSDictionary', mais je suis curieux de savoir quel avantage cela apporterait? Merci – cjroebuck

Répondre

11

Avec votre conversion d'origine, vous perdez une précision inférieure à la seconde. Vous voudrez peut-être faire quelque chose comme

CFTimeInterval seconds = [[payload valueForKey:@"starttime"] doubleValue]/1000.0; 

Le deuxième extrait devrait être bon. Je ne sais pas pourquoi vous pensez que l'utilisation de NSNumber pourrait aider de quelque façon que ce soit. Avec la modification que j'ai mentionnée, ces deux extraits de code sont simples et devraient fonctionner correctement.

+0

+1 pour 'CFTimeInterval'. –

+0

Je suppose que dans ce contexte, 'NSTimeInterval' peut être légèrement plus sémantiquement correct (comme nous utilisons NSDate), bien que le type lui-même soit en fait identique à' CFTimeInterval'. –

+0

Merci Kevin, je vais essayer ça ce soir. J'ai lu quelque part à propos de 'NSNumber' étant plus indépendant de la plate-forme que les types primitifs qu'il enveloppe, c'est pourquoi je pensais que l'utiliser serait mieux? – cjroebuck