NSDateFormatter IOS Bug - PullRequest
       2

NSDateFormatter IOS Bug

2 голосов
/ 02 апреля 2012

У меня есть функция для преобразования в 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.

как это возможно?любой обходной путь этого?


РЕДАКТИРОВАТЬ

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

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

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

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

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

[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"] autorelease]];
1 голос
/ 02 апреля 2012

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

...