NSDateFormatter dateFromString возвращает nil

Вот мой код:

NSString *_date = @"Tue, 23 Nov 2010 16:14:14 +0000"; NSDateFormatter *parser = [[NSDateFormatter alloc] init]; [parser setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss '+0000'"]; [parser setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; NSDate *date = [parser dateFromString:_date]; 

Это не запускается: «date» установлен в «nil». Я попытался с

 [parser setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"]; 

Без успеха …

Есть ли у вас какие-либо идеи ?

заранее спасибо

Добавьте эту строку:

 NSDateFormatter *parser = [[NSDateFormatter alloc] init]; [parser setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]]; 

и он будет работать. По умолчанию NSDateFormatter использует текущую локаль системы, которая может меняться в зависимости от предпочтений текущего пользователя. Строка даты выше ( @"Tue, 23 Nov 2010 16:14:14 +0000" ) содержит английские слова («Tue», «Sep»), которые потенциально не будут распознаны форматированием даты, если языковой стандарт будет установлен на ничего, кроме английского.

Более того, пользователи из западных культур могут использовать локали, которые используют другой календарь, чем григорианский календарь, который используется в западном мире. Если вы явно не установили языковой стандарт, NSDate даты мог бы проанализировать дату, но полученный NSDate будет представлять собой целый другой момент времени.

Идентификатор локали @"en_US_POSIX" предназначен для этой цели. Гарантируется, что он не изменится, даже если локаль @ «en_US» когда-нибудь изменит настройки по умолчанию.

Спецификатор часового пояса – «z», поэтому ваша строка должна быть:

 [parser setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss z"]; 
  • Как добавить userInfo в UIAlertView?
  • iOS 5 не позволяет сохранять загруженные данные в папке «Документы»?
  • Масштабирование MKMapView для подгонки аннотаций?
  • как отобразить тестовый баннер IAd в симуляторе
  • Почему NSError нуждается в двойной косвенности? (указатель на указатель)
  • SEL выполняет выбор и аргументы
  • UILongPressGestureRecognizer вызывается дважды при нажатии
  • iOS 8 Снимок снимка, который не был отображен, приводит к созданию пустого моментального снимка
  • Выполнение команд оболочки с помощью NSTask - Objective-C Cocoa
  • Собственное использование приложения делегата приложения iPhone
  • Ошибка модуля сборки iOS8 для Facebook для FBSDKCoreKit
  • Interesting Posts
    Давайте будем гением компьютера.