Parser une date et temps reel

@importer@importer Membre
22:34 modifié dans API UIKit #1
Bonjour, je suis débutant et j'ai vraiment du mal avec la doc xCode. Je cherche simplement à  récupérer l'heure HH:MM:SS d'un NSDate *aDate avec stringFromDate pour l'afficher dans un UILabel *heureLabel. Est ce que quelqu'un pourrait m'aider svp. Ah oui aussi je voudrais que l'heure se rafraichisse toutes les secondes (je l'ai déja fait en javascript mais là  je cale). Merci

Réponses

  • Philippe49Philippe49 Membre
    juin 2009 modifié #2
    Voir la classe NSDate, NSDate * date=[NSDate date]; fournit la date actuelle.

    Pour le rafraichissement, utiliser un NSTimer cadencé à  une fraction de seconde, 1/5 de seconde par exemple (à  vérifier en pratique), pour relire la date à  chaque appel de la méthode.

    Bienvenu !
  • LastikoLastiko Membre
    22:34 modifié #3
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];<br />[dateFormat setDateFormat:@&quot;yyyy-MM-dd&quot;];<br /><br />NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];<br />[timeFormat setDateFormat:@&quot;HH:mm:ss&quot;];<br /><br />NSDate *now = [[NSDate alloc] init];<br /><br />NSString *theDate = [dateFormat stringFromDate:now];<br />NSString *theTime = [timeFormat stringFromDate:now];<br /><br />NSLog(@&quot;&#092;n&quot;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;theDate: |%@| &#092;n&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;theTime: |%@| &#092;n&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , theDate, theTime);<br /><br />[dateFormat release];<br />[timeFormat release];<br />[now release];
    



    Apres tu fais comme philou a dit
  • Philippe49Philippe49 Membre
    juin 2009 modifié #4
    Pour l'écriture, voir NSDateFormatter qui te permet d'obtenir le formt que tu veux à  l'écriture.

    Voir également UIDatePicker dans IB, mais c'est un autre choix au niveau interface.

    [EDIT] grillé par Lastiko !

    Oui NSDate * now=[[NSDate alloc] init]; initialise effectivement à  la date actuelle.
    Moi je fais NSDate * now=[NSDate date]; sans release à  la fin sur now
  • LastikoLastiko Membre
    22:34 modifié #5
    dans 1245342187:

    Pour l'écriture, voir NSDateFormatter qui te permet d'obtenir le formt que tu veux à  l'écriture.

    Voir également UIDatePicker dans IB, mais c'est un autre choix au niveau interface.

    [EDIT] grillé par Lastiko !


    Ben je prends soin de toi lol  ;D ;D
  • Philippe49Philippe49 Membre
    22:34 modifié #6
    Signalons aussi components: fromDate: qui est une autre manière de récupérer dans un NSDateComponents les différents éléments d'une date.
    On peut ensuite faire un [NSString stringWithFormat:.. ] pour conclure.
  • CeetixCeetix Membre
    22:34 modifié #7
    Et vous feriez comment pour voir combien il y a de jours de différence entre deux dates mais pas sur le même mois par exemple ?
  • AliGatorAliGator Membre, Modérateur
    juin 2009 modifié #8
    On irait lire la doc de NSDate par exemple.
    Ou le Date and Time Programming Guide.
    Comme ça on y trouverait des exemples tout faits et mâchés qu'ont aurait plus qu'à  réutiliser.

    Enfin par exemple, hein.
  • CeetixCeetix Membre
    22:34 modifié #9
    :D j'y cours
  • CeetixCeetix Membre
    22:34 modifié #10
    Ok c'est simple en fait. Je voulais savoir sous quelle format sort une NSDate? Pour la présentation sur l'UI je vais bien l'afficher et donc la mettre en forme mais j'aimerais la mettre dans une BDD, pour la récupérer après.
  • AliGatorAliGator Membre, Modérateur
    22:34 modifié #11
    Mais puisqu'on vous dit que tout est dans la doc bon sang ;) Et qu'il y a même des documents entiers qui y sont consacrés !

    Ralala, savent plus chercher ces jeunes :P
  • CeetixCeetix Membre
    22:34 modifié #12
    Je reviens encre un peu sur ce point. J'ai regardé dans la doc mais je vois pas trop quoi utiliser.
    En gros je prélève la date sur un UIDatePicker et je met cette valeur dans une BDD.
    J'insère donc monPicker.date avec %@ . Ca marche super j'ai : "2009-06-24 13:38:20 +0200" dans mon champ de BDD. Mais maintenant j'aimerai récupérer cette date, la comparer à  une autre date et la formater si la comparaison est bonne. Le souci c'est que j'essaie déjà  de formater cette date et ça ne marche pas. :(
  • @importer@importer Membre
    22:34 modifié #13
    Merci à  tous pour vos réponses c'est sympa d'avoir du soutien. ;)
  • @importer@importer Membre
    22:34 modifié #14
    Salut à  tous, c'est encore moi. Je reviens sur les dates avec un petit probleme. Je parse la date (j'ai besoin des heures minutes seconde + jour et suffixe AM/PM) et le probleme est que je n'arrive pas à  récupérer le AM/PM justement. Dans la doc c'est marqué %p mais bon apparement ça fonctionne pas terrible.
    Voici mon bout de code, si quelqu'un peut y jeter un coup d'oeil ce serait cool, merci
    [aDateFormatter setDateFormat:@&quot;h:m:s:d:p&quot;];<br />	NSString *timeString = [aDateFormatter stringFromDate:aDate];<br />	<br />	//parsing de timeString au niveau des &quot;colons&quot;<br />	NSArray *components = [timeString componentsSeparatedByString:@&quot;:&quot;];<br />	NSString *h = [components objectAtIndex:0];<br />	NSString *m = [components objectAtIndex:1];<br />	NSString *s = [components objectAtIndex:2];<br />	NSString *d = [components objectAtIndex:3];<br />	NSString *p= [components objectAtIndex:4];<br />	NSString *res = [NSString stringWithFormat:@&quot;%@ : %@ : %@ : jour:%@, suff:%@&quot;,h,m,s,d,p];<br />	NSLog(@&quot;%@&quot;,res);
    
  • Philippe49Philippe49 Membre
    22:34 modifié #15
    Lire la doc sur NSDateComponents ... et la méthode components: fromDate: de NSDate.  :(
  • @importer@importer Membre
    22:34 modifié #16
    Ben justement je l'ai déja lue, et dans le "Date and Time Programming Guide for Cocoa" ils disent %p -> AM/PMdesignationforthelocale comme dans mon bouquin.

    En fait c'est pour passer mon n° de jour (ex: on est le 2 juillet) au jour d'aprés. J'avais pensé à  ne pas utiliser AM/PM en faisant ça:
    (h,m, et s sont des strings)
    if([h floatValue] ==0 &amp;&amp; [m floatValue] == 0 &amp;&amp; [s floatValue] == 0){<br />&nbsp; //j&#39;incrémente ma date<br />}
    

    ou ça
    if((int)h==0 &amp;&amp; (int)m==0 &amp;&amp; (int)s==0){<br />&nbsp; //j&#39;incrémente ma date<br />}
    


    mais ça ne fonctionne pas (même si pas d'erreur à  la compil)
    Une petite idée?
  • Philippe49Philippe49 Membre
    22:34 modifié #17
    dans 1246528750:

    En fait c'est pour passer mon n° de jour (ex: on est le 2 juillet) au jour d'aprés.


    NSDate * tomorrow=[NSDate dateWithTimeIntervalSinceNow:3600*24];
  • @importer@importer Membre
    juillet 2009 modifié #18
    Merci Philippe, on s'est mal compris mais c'est pas grave j'ai réussi à  faire ce que je voulais avec ma méthode.
    if(hNow==12 &amp;&amp; mNow==0 &amp;&amp; sNow==0){[....];}
    

    par contre il faut que j'arrive à  gérer ce fichu AM/PM pour le rajouter dans ma condition et %p ça fonctionne pas chez moi à  moins que je m'y prenne mal.
    Aprés faut que je gère les mois à  30/31 jours et celui à  28/29 >:)
    Merci encore pour ton aide.
    Et pis aussi, faut que je vide le cache du compil toutes les 3/4 compil, sinon il prend pas mes modifications en compte,  :( c'est vraiment bizarre
  • @importer@importer Membre
    22:34 modifié #19
    En fait c''est là  que ça bloque
    <br />&nbsp; &nbsp; &nbsp;  components = [timeString componentsSeparatedByString:@&quot;:&quot;];<br />	h = [components objectAtIndex:0];<br />	m = [components objectAtIndex:1];<br />	s = [components objectAtIndex:2];<br />	d = [components objectAtIndex:3];<br />	p = [components objectAtIndex:4];<br />	<br />	NSString *res = [NSString stringWithFormat:@&quot;%@ : %@ : %@ : jour:%@, suff:%@&quot;,h,m,s,d,p];<br />	NSLog(@&quot;%@&quot;,res);
    


    impossible de choper le p (en fait ya pas d'erreur de compil mais ça affiche rien)
  • Philippe49Philippe49 Membre
    22:34 modifié #20
    [dateFormatter setDateFormat:@H:m:s:d];
    récupère l'heure >= 12


    dans 1246538747:

    Merci Philippe, on s'est mal compris

    J'ai toujours pas compris ce que tu veux faire. Quand à  gérer les mois de 30 jours ou 29 jours tu penses bien que c'est déjà  fait.

    dans 1246538747:

    Et pis aussi, faut que je vide le cache du compil toutes les 3/4 compil, sinon il prend pas mes modifications en compte,  :( c'est vraiment bizarre

    C'est complètement anormal.
  • @importer@importer Membre
    22:34 modifié #21
    dans 1246543611:

    [dateFormatter setDateFormat:@H:m:s:d];
    récupère l'heure >= 12

    Trop bête, j'y ai même pas pensé, je cherche trop compliqué à  chaque fois

    dans 1246543611:

    J'ai toujours pas compris ce que tu veux faire. Quand à  gérer les mois de 30 jours ou 29 jours tu penses bien que c'est déjà  fait.

    bah en fait j'ai un cadran qui tourne tous les jours à  00:00 pour passer au jour suivant. Il est rond, avec 31 graduation. Je vais utiliser le NSDate* tomorow pour voir quel est le jour qui suit et j'aviserai de mon angle de rotation.
    dans 1246543611:

    C'est complètement anormal.

    et pourtant...ça me le fait que depuis aujourd'hui je sais pas pourquoi, ni de quoi ça peut venir (mon appli est trop lourde?! ;D)
Connectez-vous ou Inscrivez-vous pour répondre.