2010-10-06 12 views
8

W mojej aplikacji na iPhone'a staram się uzyskać plik EEE MMM dd z ciągu daty odebranego przez serwis internetowy.NSDateFormatter zwraca datę wyłączoną przez dzień

Dla wszystkich dat, w których czas wynosi < 07:00, NSDateFormatter zwraca datę wyłączoną o 1 dzień. Na przykład: Data do formatu: 2010-11-17T05: 00: 00, sformatowaną datę wyniku: Pon 16 listopada

Oto fragment kodu: NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat: @"EEE MMM dd"];

NSDate *dateToFormat = [NSDate dateWithNaturalLanguageString:dateStringToFormat locale:[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]];

NSString *formattedDateString = [dateFormat stringFromDate:dateToFormat]; [dateFormat release];

Co może być problemem?

+0

Gdzie mieszkasz i której strefy czasowej używa serwis internetowy? – Yuji

Odpowiedz

10

Prawdopodobnie ma coś wspólnego ze strefami czasowymi. Prawdopodobnie musisz ustawić odpowiednią wartość dla właściwości timeZone obiektu NSDateFormatter.

+0

Hmm, więc ustawiam właściwość strefy czasowej na localTimeZone. Ale wynik jest wciąż taki sam. Działa, gdy czas jest dłuższy niż 7 rano. Ale wszystko, co wcześniej, powoduje, że data wraca o jeden dzień. – Mansi

+4

To była poprawka: [dateFormat setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "GMT"]]; – Mansi

2

Miałem ten sam problem, ale tylko po aktualizacji do iOS4. My formater jest tak:

[aDateFormatter setDateFormat: @ "rrrr MM-dd HH: MM: SS oo"];

i moje terminy takie jak ten:

2009-10-27 7:30:12 -0700

udało mi się rozwiązać ten problem po prostu przesuwając ustawić tryb kompletacji data przed stosowanie wartości maksymalnej/min/wybranej daty w selektorze daty. W moim przypadku to:

aDatePicker.datePickerMode = UIDatePickerModeDate;

Powiązane problemy