Ответ 1
Добавьте эту строку:
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
будет представлять собой целый другой момент времени.
Идентификатор локали @"en_US_POSIX"
предназначен для этой цели. Он не будет изменяться, даже если локаль @ "en_US" когда-нибудь изменит настройки по умолчанию.