2013-08-29 18 views
12

Con il codice incollato di seguito, sto tentando di registrare un NSDate. Cosa sto facendo di sbagliato qui?Come si NSLog un NSDate?

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"YYYY-MM-dd"]; 
NSDate *todaysDate; 
todaysDate = [NSDate date]; 
NSLog(@"Todays date is %@",formatter); 
+2

'NSLog (@ "La data è% @", todaysDate);' - Certo sarà registrata la data nel formato lungo e fuso orario UTC, quindi è necessario capire quella. Per usare un formattatore devi fare 'NSLog (@" La data è% @ ", [formatter stringFromDate: todaysDate]);'. –

+1

Non correlato ma utilizzare 'yyyy' per l'anno non' YYYY'. Vedi http://stackoverflow.com/questions/3063068/weird-behavior-when-creating-an-nsdate-of-january-the-1st-and-the-2nd per i dettagli. – Anna

risposta

15

Tutto quello che dovete fare è:

NSLog(@"Todays date is %@",[formatter stringFromDate:todaysDate]); 
4

cosa si sta facendo male è che non hai fatto nulla per associare la data con il formattatore. Quindi, si vuole fare qualcosa di simile:

NSLog(@"Todays date is %@", [formatter stringFromDate:todaysDate]; 

Il NSDate non sa nulla sulla formattazione (solo informazioni aggiornate), e per la squadra di NSDateFormatter davvero sapere nulla circa le date, proprio come formattare loro. Quindi devi usare metodi come -stringFromDate: per formattare effettivamente la data per un display abbastanza leggibile da umani.

Se ciò che è necessario è quello di vedere solo le informazioni sulla data e non hanno bisogno di un particolare formato, non è necessario un formattatore per registrare una data:

NSLog(@"Todays date is %@", todaysDate); 

funzionerà bene per darvi la -description dell'oggetto NSDate. Non lo userei per tutto ciò che mostri all'utente (usa uno NSDateFormatter per quello), ma questo è utile se stai solo eseguendo il debug e hai bisogno di vedere le informazioni su un oggetto NSDate.

1

Esempio completo:

NSDate *today = [NSDate date]; 
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    [formatter setDateFormat:@"YYYY-MM-dd"]; 
    NSLog(@"%@",[formatter stringFromDate:today]); 
    [formatter release];