Format d'un NSTimeInterval
fleurantin
Membre
Bonsoir,
Je calcule l'intervalle entre deux date et je souhaite le formater en HH:MM ?
Pour l(instant je fais ça manu militari /3600 etc mais je pense qu'il y a probablement quelque chose qui le fait mieux.
Merci d'avance.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu as aussi des méthodes C plus bas niveau qui permettent de formatter ça, comme les fonctions strftime & toutes ses amies...
[EDIT]
Mais le mieux, c'est sans doute la méthode "- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)startingDate toDate:(NSDate *)resultDate options:(NSUInteger)opts" de NSCalendar, j'en parle dans mon post plus bas
[/EDIT]
Moi je trouve ça très bien ta méthode.
Mais peut-être as-tu quelques chose derrière la tête en écrivant "... qui le fait mieux" ? Que reproches-tu à ta méthode ?
Après sur la forme, une petite méthode de catégorie sur NSString, et hop !
Le mieux est d'utiliser NSDateComponents pour tout cela.
Par exemple, pour calculer la différence entre 2 NSDate (le temps qui sépare ces 2 dates), utilise la méthode "-[NSCalendar - components:fromDate:toDate:options:]" qui est justement faite pour. Elle te retourne un objet NSDateComponents qui te découpe directement ce temps passé en heures, minutes, secondes, jours si besoin, etc...
Et avec le premier paramètre tu peux même préciser quel découpage tu veux, par exemple est-ce que tu veux le résultat juste en secondes (quitte à avoir 91820 secondes), ou secondes et minutes (quitte à avoir 1530 minutes et 20 secondes), ou heures, minutes, secondes (25h, 30 minutes, 20 secondes), ou jours+heures+minutes+secondes... etc
Ben moi je préfère la méthode de fleurantin pour formater un NSTimeInterval de quelques heures MAX. ça me paraà®t plus simple et plus efficace qu'avec NSCalendar que j'utilise plutôt pour calculer une différence en jours.
Là où je suis d'accord, c'est qu'il faut que l'intervalle soit calculé avec NSDate -timeIntervalSinceDate pour prendre en compte toutes les joyeusetés du calcul des dates.
Mais bon fallait bien un peu de provoc' ^^ et surtout montrer une solution Cocoa et les méthodes existantes, ce qui était la question de fleurantin à la base
Pour donner une idée du code, voilà les 2 solutions possibles donc :
1) Calcul manuel
2) Calcul avec Cocoa
Docn pour moi c'est kif-kif en terme de nombre de LOC, sauf que la 2ème méthode t'évite de faire des maths et de risquer de te gourer dans tes formules de calcul ^^ :P
Merci à tous de vos lumières.
Je n'avais pas pensé à utiliser NSCalendar qui semble proposer une solution efficace.
Tu comptes les points Ali ?
J'en suis à 1 pour moi et 8765876543234359809875 pour toi.
Pour l'instant tu mènes ...
J'en suis à 9982 messages, donc ton compte de mes points me parait quand même un peu trop flatteur ^^
Et comme le dit Draken, tu as renversé la balance sur le sujet des char[][] où tu m'as donné un petit cours avec mpergand, et ça vaut + d'un point ça