Формат даты на 2008-02-01T10: 03: 23.793-06: 00
-
26-09-2019 - |
Вопрос
В моем проекте я получаю "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.