2012-08-24 10 views
22

Nie jestem pewien, co to jest problem, ale zamiast otrzymywania nazwy miesiąca "lipiec", otrzymuję "07".NSDateFormatter nie pokazuje pełnej nazwy miesiąca, tylko jedna cyfra numeru

dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setLocale:[NSLocale systemLocale]]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];  
[dateFormat setDateFormat:@"MMMM dd, h:mm a"]; 

Próbowałem M, MM, Mmm, MMMM, a wszystkie z nich da mi numer, zamiast nazwy miesięcy, choć z różnymi ilościami czołowych 0s.

+0

Myślę, że ta linia jest problemem .. [dateFormat setLocale: [NSLocale systemLocale]]; nie wiem jaki jest twój cel używania 'systemLocale' ale możesz wypróbować' currentLocale' zamiast 'systemLocale' – ila

Odpowiedz

45

Okazuje się, że problem dotyczy drugiej linii, setLocale. Zakładam, że system nie domyślnie używa angielskich nazw miesięcy, gdy locale został ręcznie ustawiony? Mieszkam w języku angielskim locale, ale może to nie ma znaczenia.

W każdym razie nie ustawienie lokalizacji rozwiązuje problem z nazwą miesiąca.

dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];  
[dateFormat setDateFormat:@"MMMM dd, h:mm a"]; 
7

-systemLocale nie jest tym, czego potrzebujesz. Zwraca lokalną rezerwę, jeśli nie pasują żadne inne ustawienia narodowe. Użyj -currentLocale, aby uzyskać bieżące ustawienia regionalne użytkownika.

również:
należy użyć metody NSDateFormatter+dateFormatFromTemplate:options:locale: „s, aby uzyskać prawidłowy format daty. W niektórych językach dzień nadchodzi przed miesiącem itd. I na odwrót.

Powiązane problemy