2013-08-29 9 views
12

Po wklejeniu kodu próbuję zalogować się do NSDate. Co ja tu robię źle?Jak NSLog NSDate?

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

'NSLog (@ "Data jest% @", todaysDate);' - Oczywiście data będą rejestrowane w długim formacie i strefy czasowej UTC, więc trzeba zrozumieć że. Aby użyć formatyzatora, wykonaj 'NSLog (@" Data jest% @ ", [formatter stringFromDate: todaysDate]);'. –

+1

Niepowiązane, ale użyj "yyyy" dla roku, a nie "YYYY". Więcej informacji można znaleźć na stronie http://stackoverflow.com/questions/3063068/weird-behavior-when-creating-an-nsdate-of- january- the-1st-and--2dnd. – Anna

Odpowiedz

15

Wszystko co musisz zrobić, to:

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

Co robisz źle to jeszcze nie wszystko, aby skojarzyć datę z formater zrobić. Więc, co chcesz zrobić coś takiego:

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

NSDate nie wiem nic na temat formatowania (tylko aktualne informacje), a NSDateFormatter robi naprawdę wiedzą nic o terminach, tak jak je sformatować. Musisz więc użyć takich metod, jak -stringFromDate:, aby faktycznie sformatować datę dla czytelnego dla ludzi wyświetlacza.

Jeśli to, co trzeba, to po prostu zobaczyć informacje o dacie i nie potrzebują konkretnego formatu, nie trzeba się logować formatowania daty:

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

będzie działać dobrze, aby dać Ci -description obiektu NSDate. Nie użyłbym tego do niczego, co wyświetliłbyś użytkownikowi (używaj do tego celu NSDateFormatter), ale jest to przydatne, jeśli dopiero debugujesz i potrzebujesz informacji o obiekcie NSDate.

1

Kompletny przykład:

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