Проблемы с разбором времени ISO8601 в iOS

Я пытаюсь преобразовать эту строку «2011-11-23T17:59:00Z» в NSDate.

Я видел многих людей с этой проблемой, но у всех немного другой формат. Я не смог взломать решение.

Я пробовал такой код, как:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
dateFormat.timeStyle = NSDateFormatterFullStyle;
[dateFormat setDateFormat: @"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSString* date = ""2011-11-23T17:59:00Z"";
NSString *dateString = [dateFormat stringFromDate: date];

dateString всегда возвращается NULL


person phil swenson    schedule 14.12.2011    source источник


Ответы (1)


arrow_upward
3
arrow_downward

NSDateFormatter stringFromDate принимает объект NSDate, и вы передаете ему строку. http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

Попробуйте NSDateFormatter dateFromString.

Если вы используете dateFromString:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat: @"yyyy-MM-dd'T'HH:mm:ssZ"];
NSString* dateStr = @"2011-11-23T17:59:00Z";
NSDate *date = [dateFormat dateFromString:dateStr];

NSLog(@"date: %@", date);

Выходы:

2011-12-14 00:34:57.587 Craplet[440:707] date: 2011-11-23 22:59:00 +0000
person bryanmac    schedule 14.12.2011
comment
Этот ответ неверен. Строка формата не должна заключать в кавычки Z. - person rmaddy; 13.09.2014