Для iPhone OS 4.0 метод dateFromString NSDateFormatter возвращает ноль - PullRequest
8 голосов
/ 09 июля 2010

Я использую следующий код, и он отлично работает в iPhone OS 3.2

+(NSDate *)NSDateFromString:(NSString *)dateString
{

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateStyle:NSDateFormatterShortStyle];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSDate *dateObj=[dateFormatter dateFromString:dateString];
    [dateFormatter release], dateFormatter=nil;
    return dateObj;
}

Но когда я попытался использовать тот же код, что в iPhone OS 4.0, dateObj был равен нулю.Причина: метод

- (id)init для NSDateFormatter доступен только в iPhone OS 2.0 через iPhone OS 3.2.Это устарело в iPhone OS 4.0.

Теперь, какое решение для этого?Как начать NSDateFormater?Какая альтернатива?

Ответы [ 3 ]

2 голосов
/ 12 июля 2010

[NSDateFormatter dateFormatFromTemplate: options: locale:] может работать лучше

NSString *format = [NSDateFormatter
                   dateFormatFromTemplate:@"Mdjm"
                                  options:0
                                   locale:[NSLocale currentLocale]];

// "M / dh: mm a" // Формат английского языка США возвращается для локали США

[dateFormatter setDateFormat:format];
NSDate *date = [dateFormatter dateFromString:dateString];
2 голосов
/ 15 октября 2010

В iOS2.x и 3.x функция NSDate description / datefromstring возвращает: 2010-09-24 17:30:00 - 0700

в iOS 4.1 возвращает следующее: 2010-09-25 00:30:00 GMT

Вы можете отправить сообщение об ошибке в яблоко. Он даже не следует спецификации, в которой говорится, что он должен возвращать 0000 для смещения. Таким образом, он не только не возвращает локальную дату, но также использует GMT вместо смещения. Похоже, что этот новый формат не совместим с методами NSDateFormatter.

Кроме того, я не думаю, что это ошибка в документации. В документе API Diff перечислено, что init удален для NSDateFormatter.

2 голосов
/ 11 июля 2010

- (id)init не рекомендуется для NSDateFormatter в iOS4.Это ошибка в документации.

...