Формат даты для 2008-02-01T10: 03: 23.793-06: 00 - PullRequest
4 голосов
/ 01 сентября 2010

В моем проекте я получаю "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"];

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

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

Спасибо

Ответы [ 5 ]

6 голосов
/ 04 марта 2011
    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.)

2 голосов
/ 05 марта 2014

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

[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
1 голос
/ 01 сентября 2010

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

1 голос
/ 28 января 2011

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

http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/Elements/GDataDateTime.m

0 голосов
/ 01 сентября 2010

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

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

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

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

...