2010-10-06 3 views
8

В моем приложении iPhone я пытаюсь получить EEE MMM dd из строки даты, полученной веб-службой.NSDateFormatter возвращает дату на день

Для всех дат, где время < 07:00, NSDateFormatter возвращает дату на 1 день. Например: Дата в формате: 2010-11-17T05: 00: 00, отформатированный результат дата: вт 16 ноября

Вот фрагмент кода: 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];

Что может быть проблема?

+0

Где вы живете и какой часовой пояс использует веб-сервис? – Yuji

ответ

10

Возможно, что-то связано с часовыми поясами. Вероятно, вам нужно установить соответствующее значение для свойства timeZone объекта NSDateFormatter.

+0

Хм, поэтому я установил свойство часового пояса как localTimeZone. Но результат все тот же. Он работает, когда время больше 7 утра. Но что-нибудь до этого, заставляет дату вернуться на день. – Mansi

+4

Это было исправление: [dateFormat setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "GMT"]]; – Mansi

2

У меня была эта же проблема, но только после обновления до iOS4. Мой форматировщик как это:

[aDateFormatter setDateFormat: @ "гггг-ММ-дд чч: мм: сс г"];

и мои даты, как это:

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

мне удалось решить проблему, просто перемещая множество режимов выбора даты до, применяя максимальную/минимальную/выбранную дату для выбора даты. В моем случае это:

aDatePicker.datePickerMode = UIDatePickerModeDate;

Смежные вопросы