Trouver la différence entre deux horodatages - iOS
Je suis en train d'utiliser NSTimeInterval à comprendre la différence entre les deux horodateurs dans mon application iOS. Cependant, je lorsque vous essayez de transmettre à mon timestamp, j'obtiens l'erreur suivante:
Mauvais récepteur de type 'double'
Voici mon code:
//Get the current date/time in timestamp format.
NSString *timestamp = [NSString stringWithFormat:@"%f", [[NSDate new] timeIntervalSince1970]];
double current = [timestamp doubleValue];
//Find difference between current timestamp and
//the timestamp returned in the JSON file.
NSTimeInterval difference = [current timeIntervalSinceDate:1296748524];
Je pensais que NSTimeInterval est juste un autre sens pour le double.. est-ce pas?
Note que "1296748524" est utilisé ici comme un test.
Je ne comprends pas ce que je fais de mal.
Merci pour vous avez le temps 🙂
- Pourquoi êtes-vous de la conversion d'une chaîne à faire la différence?
InformationsquelleAutor Supertecnoboff | 2014-03-12
Vous devez vous connecter pour publier un commentaire.
Je reconnais que timestamp! Si vous allez obtenir un timestamp comme une chaîne de caractères, puis le reconvertir en un double, vous pouvez juste obtenir un double.
Correctif:
Mieux:
Mais ce que vous êtes vraiment en train de faire est la conversion d'une date en timestamp d'une chaîne à un timestamp d'une date en timestamp, alors pourquoi ne pas l'utiliser dès le début et d'utilisation:
Meilleur:
Tout sera même résultat.
NSObject
appeleralloc] init]
(sens c'est exactement la même), mais il n'est toujours pas la norme de codage de la pratique. Je ne dis pas que le code n'est pas fonctionnel, mais si je travail sur le code et l'avait vu, il serait frustrant de découverte.timeIntervalSinceDate:
s'attend à recevoir unNSDate
. Aussi, c'est une méthode d'instance pour uneNSDate
. Oui, la valeur de retour est, essentiellement, undouble
, mais c'est une fonction à l'aide deNSDate
objets.Voici un exemple de l'utilisation appropriée:
Dans l'exemple ci-dessus, "écoulé" contient le nombre de secondes qui se sont écoulées entre "date1" et "date2". Si "date1" est avant "date2", la valeur sera négative.