Ошибка IOS NSDateFormatter


У меня есть функция для преобразования в NSDate с помощью NSDateFormatter.

+(NSDate*)getDateFromCurrentTimestamp:(NSString*)currentTimestamp{
//    currentTimestamp= @"28-Feb-2012 16:42:19 PM";

    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    [dateFormatter setDoesRelativeDateFormatting:NO];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    [dateFormatter setFormatterBehavior:NSDateFormatterShortStyle];
    //[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehaviorDefault];
    [dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm:ss a"];

    return [dateFormatter dateFromString:currentTimestamp];
}

IOS 5.x возвращается правильно NSDate. при запуске на 4.1 и 4.2 также возвращаются правильные NSDate. при запуске на 4.3.2 и 4.3.3, он возвращается null.

Как это возможно? есть ли обходной путь для этого?


EDIT

Это не вызвано ошибкой iOS. это связано с самим телефоном. некоторые телефоны имеют другой набор locale в устройстве. поэтому нам пришлось заставить его использовать один locale.

2 2

2 ответа:

Из нашего обсуждения в комментариях:

установлены ли ваш регион и локаль для устройств 4.3.2 и 4.3.3? Смотрите, если это так Вопрос помогает.

Соответствующий код:

[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]];

Похоже, кто-то сталкивался с этой проблемой раньше. Обходной путь написан здесь: NSDateFormatter возвращает null для даты в ios 4.3.3