Formatage des secondes en hh: ii: ss
J'ai app qui est un basic de la minuterie. Il permet de suivre le nombre de secondes que l'application est exécutée. Je veux convertir en sorte que les secondes (NSUInteger) sont affichés comme: 00:00:12 (hh:mm:ss). Donc, j'ai lu ce post:
NSNumber de quelques secondes à plusieurs Heures, minutes, secondes
À partir de laquelle j'ai écrit ce code:
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[self meeting] elapsedSeconds]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm:ss"];
Il fonctionne très bien, mais il commence par 04:00:00. Je ne sais pas pourquoi. J'ai aussi essayé de faire quelque chose comme:
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:[[self meeting] elapsedSeconds] * -1];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm:ss"];
Penser qu'elle affiche le compteur correctement, mais il fait un bizarre 01:23:00, puis il suffit de flops à 04:00:00 et y reste pendant le reste du temps.
MS
source d'informationauteur Mark Steudel | 2010-10-28
Vous devez vous connecter pour publier un commentaire.
Ceci est similaire à un réponse précédente sur la mise en forme du temps, mais ne nécessite pas une date de formatage, parce que nous ne traitons pas avec des dates plus.
Si vous avez le nombre de secondes considéré comme un entier, vous pouvez travailler sur le temps de travail individuel composants vous-même:
Bien qu'il existe des moyens plus faciles de le faire (@dreamlax a un très bon sens), laissez-moi vous expliquer quel est le problème avec votre exemple, et nous allons le faire fonctionner:
D'abord, la raison pour laquelle il est en montrant
04:00:00
(bon, c'est probablement en fait montrant04:00:12
), c'est parce qu'il est la conversion de l'heure UTC/GMT à votre heure locale. Pour résoudre ce problème, vous devez ajouter la ligne suivante:Ensuite, il ne montre plus
04:00:12
parce qu'il ne convertit pas le fuseau horaire. Malheureusement, il va maintenant montrer12:00:12
au lieu de00:00:12
parce qu'il est minuit. Afin de corriger cela, il faut les convertir la chaîne de 24 heures plutôt que par l'aide de laHH
formateur au lieu dehh
:Garder à l'esprit que, puisqu'il a été conçu pour fonctionner avec le temps, que cela ne fonctionne pas pendant plus de 24 heures (car il sera le "roll over" à minuit).
Le code complet serait: