Вопрос

В моем проекте я получаю "2008-02-01T10: 03: 23.793-06: 00" Этот формат даты в строке, который я должен преобразовать в NSDATE, я использую

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

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 

NSDate* dateFromString = [dateFormatter dateFromString:@"2008-02-01T10:03:23.793-06:00"];

Но когда я получаю значение DATE, используя NSLog, я получаю значение как NULL.

Пожалуйста, помогите мне

Благодарю вас

Это было полезно?

Решение

NSDateFormatter не сможет разбирать его, потому что часовой пояс не соответствует RFC 822 или стандарт GMT. Отказ Проблема в последнее время ":" Чтобы вам нужен "GMT".

Дата, которую у вас уважает RFC 3339..

Вам нужно будет использовать NSFormatter, чтобы разбирать его. Вы должны использовать getObjectValue:forString:errorDescription:

Установите строку @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

Другие советы

    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
[formatter setLenient:YES];
NSString* buggeredTime = [[sourceDate substringToIndex:26] stringByAppendingString:[sourceDate substringFromIndex:27]];
NSDate* dueDate = [formatter dateFromString:buggeredTime];
[formatter setDateFormat:@"'Time Due: 'hh:mm a  MM/dd/yy"];
NSString* dateString = [formatter stringFromDate:dueDate];
[formatter release];

(Недостаточно, если нужен Setlenient.)

Просто используйте это вместо этого (обратите внимание на «ZZZ» вместо «Z»):

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];

Я думаю, вам нужно также установить локаль для форматирования. Взглянуть здесь

Клиент Google's GDATA Objective-C имеет класс (GDatadateTime), который может анализировать даты RFC 3339.

http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/source/element/gdatadateTime.m.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top