NSDateFormater dateFromString: - PullRequest
       1

NSDateFormater dateFromString:

2 голосов
/ 10 января 2011
NSDateFormatter *isoDateFormatter = [NSDateFormatter new];
[isoDateFormatter setDateFormat:@"yyyy-MM-dd"];
[isoDateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[isoDateFormatter setFormatterBehavior:NSDateFormatterBehaviorDefault];
NSString * str = [isoDateFormatter dateFromString:@"2008-12-31T12:00:00"]

на 4.0 IOS вышеупомянутый код, т. Е. Str - ноль, на 3.0 IOS это работает нормально, str - 2008-12-31. Как преодолеть эту проблему?

Ответы [ 2 ]

13 голосов
/ 10 января 2011

Похоже, вы хотите преобразовать дату из одного строкового формата в другой.Чтобы сделать это, вам нужно сделать это в два этапа - отформатировать строку FROM в NSSDate, затем от этой даты до NSString.

NSDateFormatter *dateWriter = [[NSDateFormatter alloc] init];
NSDateFormatter *dateReader = [[NSDateFormatter alloc] init];
[dateWriter setDateFormat:@"yyyy-MM-dd"];
[dateReader setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];

NSDate *dateTmp = [dateReader dateFromString:@"2008-12-31T12:00:00"];
NSString *str = [dateWriter stringFromDate:dateTmp]
//str now contains "2008-12-31". 

//and don't forget!!!
[dateReader release];
[dateWriter release];

Вы можете достичь того же результата с одним форматером даты, прочитав, сбросив формат даты и затем записав, если хотите.Я просто изложил это так, чтобы было легко увидеть процесс.

Примечание: я всегда забываю выпускать NSDateFormatters.Clang и Instruments всегда ловят меня, пропуская их.Я думаю, что я использую их, и кажется, что они сделали.Они не, тем не менее!Так что будьте умнее меня и не забывайте NARC в вашем управлении памятью!

Примечание 2 - Не игнорируйте предупреждения компилятора.Ваш компилятор предупреждает вас о неверном назначении, которое вы делаете, и вы игнорируете это.

3 голосов
/ 10 января 2011

dateFromString: Возвращает представление даты заданной строки, интерпретированной с использованием текущих настроек получателя.

- (NSDate *)dateFromString:(NSString *)string

Параметры string Строка для анализа.Возвращаемое значение Представление даты в строке, интерпретируемой с использованием текущих настроек получателя.

Доступен Доступно в iOS 2.0 и более поздних версиях.См. Также

– getObjectValue:forString:range:error:
– stringFromDate:

Связанный пример кода URLCache, объявленный в

NSDateFormatter.h

Чтение документов .

DateFromString возвращает объект Date, а неNSString.

...