Ошибка 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 ответа:
Из нашего обсуждения в комментариях:
установлены ли ваш регион и локаль для устройств 4.3.2 и 4.3.3? Смотрите, если это так Вопрос помогает.
Соответствующий код:
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]];
Похоже, кто-то сталкивался с этой проблемой раньше. Обходной путь написан здесь: NSDateFormatter возвращает null для даты в ios 4.3.3