2014-09-03 1 views
0

Je reçois un horodatage du serveur comme longLongValue. J'ai besoin de le convertir en NSDate dont les méthodes nécessitent NSTimeInterval. Comment est-ce que je fais cela correctement? Ce qui suit a donné lieu à une date bizarreComment convertir longLongValue en NSTimeInterval

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timestamp doubleValue]]; 
+0

Quel est le résultat d'un 'NSLog'? Qu'entendez-vous par "une date bizarre"? –

+0

OK 'long long' ne décrit pas ce que signifie la valeur, mais seulement comment elle est représentée (c'est-à-dire un entier signé de 64 bits). Que mesurent les valeurs (c'est-à-dire que signifierait «1» dans ce format)? – trojanfoe

+0

Mon horodatage d'entrée du serveur (java) est '1409211078761'. La sortie iOS est 'Feb 14,46626, 1:52:41 AM' – learner

Répondre

3

Puisque vous venez de Java, cela signifie que vous utilisez System.currentTimeMillis ou quelque chose comme ce qui utilise le temps milliseconde. Mais NSTimeInterval est toujours en secondes. Vous devriez donc utiliser

NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timestamp longLongValue]/1000.0]; 
+0

Où avez-vous obtenu l'information que c'est un serveur Java? Cependant, cela ressemble à la bonne réponse :) – trojanfoe

+0

Confirmé à partir de [ici] (http://www.onlineconversion.com/unix_time.htm). Plonger le numéro mentionné par l'OP dans les commentaires par 1000 donne 'Thu, 28 août 2014 07:31:18 GMT» ce qui me semble bien. – trojanfoe

+0

C'est vrai, j'ai aussi écrit une catégorie à NSDate pour effectuer la conversion de l'horodatage du serveur java à l'un de mes projets –

Questions connexes