2012-02-27 4 views
4

Я пытаюсь форматировать дату из RSS Feed:NSDateFormatter на один час

Mon, 27 Feb 2012 10:33:00 EDT (формат из RSS-канал)

To:

пн, 27 февраля 2012 10:33 утра

Вот что я делаю в коде:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"EE, d MM yyyy HH:mm:ss zzz"]; 

NSDate *date = [dateFormat dateFromString:@"Mon, 27 Feb 2012 10:33:00 EDT"]; 

[dateFormat setDateFormat:@"EE, d MMM yyyy hh:mm a"]; 

formatedDateLabel.text = [dateFormat stringFromDate:date]; 

[dateFormat release]; 

Однако это всегда выводит:

Mon, 27 Feb 2012 9:33 утра

Обратите внимание, что мои устройства устанавливается на EST. Я попытался настроить формат даты, чтобы соответствовать EDT, но это, похоже, не имеет никакого значения.

Любые идеи о том, что я делаю неправильно?

+0

Итак, чтобы убедиться, что вы пробовали 'dateFormat.timeZone = [NSTimeZone timeZoneWithAbbreviation: @" EST "]' перед тем, как сделать свой вывод? – yuji

+0

Привет, yuji, я попробовал настроить его на EST и EDT. Я получаю тот же результат для обоих странно. Если я установлю его на что-то вроде GMT, время даты будет показано правильно. –

ответ

2

Вы не делаете ничего плохого. Причина это происходит потому, что внутреннее представление NSTimezone «S из EDT и EST идентичны:

// These objects are the same: 
[NSTimeZone timeZoneWithAbbreviation:@"EST"]; 
[NSTimeZone timeZoneWithAbbreviation:@"EDT"]; 

NSDateFormatter dateFromString: достаточно умен, чтобы знать, что дата в феврале отмечен EDT должен иметь GMT смещение -4 вместо - 5, хотя это не хорошо сформированная дата. Но когда вы используете его в , отобразите даты, если его часовой пояс установлен на EST или EDT (который он рассматривает как одно и то же), он будет использовать соответствующий часовой пояс, исходя из того, действует ли на тот момент дневная экономия.

+0

Это имеет смысл, проблема у меня/была, однако, статья была опубликована в 10:33:00, но формат NSDate возвращает ее как 9:33:00. Я забыл упомянуть об этом в вопросе. Однако, поскольку я собирался опубликовать ссылку на RSS-канал, я заметил, что даты на странице RSS Engadget демонстрируют одно и то же поведение (в течение часа), поэтому похоже, что это проблема Engadget с их фидом. В любом случае спасибо за подтверждение Юджи, это был по-прежнему полезный пост. -Cheers –

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