Récupérer le contenu d'un NSDate

MaxdivertisMaxdivertis Membre
22:30 modifié dans API AppKit #1
Bonjour,

Voilà  ce que j'aimerais faire : récupérer indépendament le jour, le mois , l'année, l'heure, les minutes et les secondes d'un NSDate.
D'abord mon NSDate est censé avoir ce format : "dd-MM-yyyy HH:mm:ss" mais il me l'affiche avec le GMT +0200 ! Y'a-t-il un problème de formatage avec
setDateFormat:@"dd-MM-yyyy HH-mm-ss"
?

Ensuite pour la partie récupération de données je fais :
<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  //appel de ma méthode convertStringDate pour récupérer le NSDate<br />	&nbsp; &nbsp; NSDate *dateFic = [self convertStringDate:chaineRecup1];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSDate *finalDat;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unsigned unitFlags = NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit |NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSDateComponents *com = [gregorian components:unitFlags fromDate:date toDate:finalDat options:0];<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NSLog(@&quot;hours: %d&quot;, [com day]); <br />

Et ça ne marche pas ! J'ai une erreur objc_msgSend_fpret. Donc comment puis-je faire ?     
Merci

Réponses

  • RocouRocou Membre
    22:30 modifié #2
    dans 1253777067:

    Bonjour,

    Voilà  ce que j'aimerais faire : récupérer indépendament le jour, le mois , l'année, l'heure, les minutes et les secondes d'un NSDate.
    D'abord mon NSDate est censé avoir ce format : "dd-MM-yyyy HH:mm:ss" mais il me l'affiche avec le GMT +0200 ! Y'a-t-il un problème de formatage avec
    setDateFormat:@&quot;dd-MM-yyyy HH-mm-ss&quot;
    
    ?


    Pour ma part, j'utilise descriptionWithCalendarFormat

    Exemple pour récupérer le nom du jour:
    NSCalendar *monCalendrier = [NSCalendar currentCalendar];<br />	<br />NSDate *maDate = [NSDate date];<br />NSString * jourSemaineString = [maDate descriptionWithCalendarFormat:@&quot;%A&quot; timeZone:nil locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];<br /><br />NSLog(@&quot;Jour de la semaine: %@&quot;, jourSemaineString);<br />
    


    Pour récupérer juste l'heure (sans le GMT), il faut utiliser le format %H:%M:%S
  • RocouRocou Membre
    22:30 modifié #3
    dans 1253777067:

    Y'a-t-il un problème de formatage avec
    setDateFormat:@&quot;dd-MM-yyyy HH-mm-ss&quot;
    
    ?

    Ce n'est pas un format, c'est une représentation.
  • MaxdivertisMaxdivertis Membre
    22:30 modifié #4
    Ah ouai ta méthode fonctionne en revanche elle stock le résultat dans un NSString alors que j'aurais aimé que ça soit dans un NSDate ou quelque chose dans le genre (pour me permettre de faire des opérations de dates dessus : par ex le 31 + 1 = le 1er du mois suivant). Comment faire ? car si je remplace NSString par NSDate j'ai un "warning : initialization from distinct objective-C type".
  • RocouRocou Membre
    22:30 modifié #5
    dans 1253781007:

    Ah ouai ta méthode fonctionne en revanche elle stock le résultat dans un NSString alors que j'aurais aimé que ça soit dans un NSDate ou quelque chose dans le genre (pour me permettre de faire des opérations de dates dessus : par ex le 31 + 1 = le 1er du mois suivant). Comment faire ? car si je remplace NSString par NSDate j'ai un "warning : initialization from distinct objective-C type".


    Pour faire des operations il faut utiliser les "components". Voici un exemple de code où l'on va ajouter 1 mois et retrancher 3 jours à  la date du jour:

    - (IBAction)TritureDate:(id)sender {<br />	<br />	NSString *today = [[NSCalendarDate calendarDate]<br />					&nbsp;  descriptionWithCalendarFormat: @&quot;%A %d %B %Y&quot;];<br />	NSRunAlertPanel(@&quot;Jour:&quot;, today , @&quot;OK&quot;, nil, nil);<br />	<br />	<br />	<br />	NSCalendar *monCalendrier = [NSCalendar currentCalendar];<br />	<br />	NSDate *maDate = [NSDate date];<br />	<br />	NSDateComponents *comps = [[NSDateComponents alloc] init];<br />	[comps setMonth:1];<br />	[comps setDay:-3];<br />	NSDate *date = [monCalendrier dateByAddingComponents:comps toDate:maDate&nbsp; options:0];<br />	NSLog(@&quot;jour: %d&quot;,[comps day]);<br /><br />	[comps release];<br />	<br />	<br />	NSString * weekdayString = [date descriptionWithCalendarFormat:@&quot;%H:%M:%S&quot; timeZone:nil<br />																locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];<br />	NSLog(@&quot;Day of the week: %@&quot;, weekdayString);<br />	<br />	NSLog(@&quot;date: %@&quot;,date);<br />	}<br />
    

  • Philippe49Philippe49 Membre
    22:30 modifié #6
    ou  alors

    <br />#import &lt;Foundation/Foundation.h&gt;<br />// Essai<br />int main (int argc, const char * argv&#91;]) {	<br />	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];<br />	NSDate * date=[NSDate date];<br />	NSDateComponents * components=[[NSCalendar currentCalendar] components:NSHourCalendarUnit fromDate:date];<br />	NSLog(@&quot;%ld&quot;,[components hour]);<br />	[pool drain];	<br />	return 0;<br />}
    


    Exécution :
    <br />% gcc pgm.m -o pgm -framework Foundation<br />% pgm<br />2009-09-24 22:17:23.879 pgm[2178:903] 22<br />% <br />
    


Connectez-vous ou Inscrivez-vous pour répondre.