Conversion en intergerValue supprime le 0
Hello
Lors de ma conversion de 02 de String vers Int il me le passe en "2"
Quelqu'un pourrait m'aider pour qu'il m'affiche 02 et non 2 s'il vous plait ? c'est dans le cadre d'une date
NSString* currentDay = [dateRecup substringWithRange:NSMakeRange(0,2)];
NSLog(@Current Day %@", currentDay);
NSInteger jourCourant = [currentDay integerValue];
NSLog(@Jour Courant %@", jourCourant);
Current Day 02
Jour Courant 2
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pourquoi tu gardes pas ton currentDay qui affiche bien le bon format ?
Après logique que l'integer vire le 0, t'écrit pas un chiffre 02 en int.
Je vois pas trop l'intérêt si ça marche dans le premier cas de complexifier le système pour créer un cas d'erreur. Mais bon au lieu de faire un NSInteger tu pourrais faire un NSNumber qui offre des options de formatage.
Sinon en travaillant directement sur le chiffre me semble qui c'est
Si c'est pas exactement ça tu peux trouver la syntaxe exacte sur google facilement.
Il vaut mieux d'utiliser NSNumberFormatter pour montrer les chiffres selon les règles de localisation et de format de l'utilisateur.
Pourquoi vouloir complexifier ?
Cela dans le but d'avoir un int et pas un string
En fait j'ai ma date au format français et je doit la passer au format américain
En outre la passer de 08/12/2014 15:43 à 2014-12-08 15:43:46 +0000 (je présume que +0000 est la locale)
Pour changer le format de date utilise NSDateFormater sur ta date initiale plutôt que d'essayer de faire ton formatage perso !
Bah ma dateRecup est au format NSString, puisque j'ai déjà fait un NSDateFormatter précédemment.
Oui je sais c'est complexe, je récupére ma date au format US, je la transforme en FR sur Vue 1 grace au Date Formatter et sur Vue 2 j'ai besoin des 2 formats: FR pour afficher dans le label, et US pour l'ajouter au calendrier iOS
Tu la récupère au format US -> tu la stockes et tu l'utilises pour l'insert.
Bon ta solution a l'air de marcher, mais quand est il si le jour est le 10 et non le 1 ? J'aurais 010 ?
Comment on convertis un NSString en NSDate ?
Passer ça "2014-12-09 07:45:00 +0000" au format Date
Non. Tu auras 10. C'est la spécification du format %02d : écrit un nombre entier sur 2 chiffres en remplissant avec des '0' au lieu d'espaces si nécessaire.
Et là tu es effectivement en train de réécrire une partie de la classe NSDateFormatter qui sert justement à présenter une date dans le format souhaité.
Quelle est la fonctionnalité qui te manque dans NSDateFormatter qui justifie que tu la réécrives à ta sauce ?
Comme ça :
Cette méthode n'existe pas sous iOS et elle est dépréciée dans la version OS X v10.10.
@Jean75 Regarde de coté NSDateFormatter.
Tu veux afficher ton nombre sous forme de texte. Donc il faut le convertir en texte. C'est comme si tu avais 200 centimes et que tu disais "hé mais quand je regarde la valeur que j'ai dans mon porte-monnaie, j'ai pas 200 centimes mais j'ai 2 euros !" Bah c'est pareil, c'est le même nombre, c'est juste sa représentation textuelle qui est différente.
Alors il faut un NSDateFormatter. Mais surtout, surtout, surtout, il faut lire le "Date and Time Programming Guide" d'Apple, qui t'enseigne tout ce qu'il faut savoir sur les dates (et il y'a beaucoup de choses importantes à savoir, parfois même des choses qu'on pense savoir ou des subtilités qu'on loupe facilement si on ne les connait pas, donc c'est une lecture OBLIGATOIRE avant de commencer à travailler avec des dates.
Et c'est là qu'on voit que c'est pas pour rien qu'il existe des NSDateFormatter, parce que formatter une date ce n'est pas aussi simple qu'on pourrait le croire, quand on prend en compte tous les cas possibles (changement d'heure, fuseau horaire, locale de l'utilisateur, et j'en passe)
Ouch ! Le placeholder "%@" est fait pour afficher des objets !! Or ta variable jourCourant n'est PAS un objet, c'est un NSInteger, autrement dit un entier (un type primitif, non-objet).
Tu as vraiment de la chance que ton code ne crash pas si tu écris cela. D'ailleurs Xcode doit certainement te mettre un warning si tu mets un "%@" dans ton format de NSLog mais que tu mets un NSInteger dans le paramètre d'après (et les warnings c'est pas pour rien, ils sont + qu'importants et à ne pas négliger, surtout quand on débute, car ils expliquent justement ce qui ne va pas et les risques que tu peux avoir et ce que tu as fait de travers...)
La lecture indispensable avant d'aller plus loin.
Je ne peux pas renforcer ça assez fortement. Il FAUT regarder la vidéo 219 du WWDC 2013 !!!
@jpimbert: J'avais effectivement essayé ça mais sans succès
@Samir: Ok je regarde de ce côté
@AliGator: Pour ajouter mon heure dans le calendrier il me le faut sous 2 chiffres, d'où la nécessité d'afficher le 0 devant les chiffres entre 0 et 9
Ok je regarde du côté du NSDateFormatter
Concernant le %@, avec le int, c'est juste un truc que j'ai écris rapidement ici afin d'illustrer, mais que j'utilise pas vraiment, je sais très bien qu'il faut utiliser %d
@Joanna: D'accord je la regarderais ce soir
J'ai essayé également ça mais sans aucun succès:
Sachant que mon dateDebut c'est ça:
Problème réglé, merci à tous
Ta première ligne ne sert strictement à rien (à part gaspiller de la mémoire).
Tu me conseilles de faire quoi du coup s'il te plait ?
Tu initialises dateD avec la date actuelle, puis tu la re-initialises avec ta date préférée. Tu aurais pu écrire :
Et cette ligne :
... met le timeZone à nil.
Ok merci pour les conseils Joanna
Sinon, aussi, quel dommage de forcer un dateFormat fixe et une TimeZone... qu'en est-il de ceux qui utilisent ton application dans une autre langue ou en ayant des réglages de format de date différents dans leurs préférences système ? Un américain par exemple préférera le mois avant le jour là où un français preferera l'inverse.
Quant à la TimeZone, pourquoi l'imposer ? (Avec un nom de TimeZone qui n'existe même pas qui plus est !) Je fais comment moi quand je vais partir en Irlande à Noël et que j'aurai un décalage horaire ? Ton appli ca décaler toutes les dates et heures dnune heure et les horaires vont plus vouloir rien dire !
(A se demander si tu as lu le Date and Time Programming Guide que j'ai cité plus haut qui est sensé te sensibiliser à tous cela)