Pergunta

No meu projeto, estou recebendo "2008-02-01T10: 03: 23.793-06: 00" Este formato de data em string eu tenho que converter em nsdate, estou usando

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"];

Mas quando sou o valor da data de impressão usando o NSLog, estou obtendo valor como nulo.

Por favor, me ajude

Obrigada

Foi útil?

Solução

Nsdateformatter não será capaz de analisá -lo, porque o fuso horário não está em conformidade com RFC 822 ou padrão GMT. O problema está no último ":" para que você precise do "GMT".

A data em que você tem respeita o RFC 3339.

Você precisará usar um nsformatter para analisá -lo. Você deveria usar getObjectValue:forString:errorDescription:

Defina a string @"yyyy-MM-dd'T'HH:mm:ss.SSSZ".

Outras dicas

    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];

(Não é necessário se o setlenient for necessário.)

Basta usar isso (observe o "zzz" em vez de "z"):

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

Eu acho que você precisa definir um local para o formatador também. Dar uma olhada aqui

O cliente GDATA Objective-C do Google possui uma classe (gdatadateTime) que pode analisar as datas RFC 3339.

http://code.google.com/p/gdata-objecjectivec-client/source/browse/trunk/source/Elements/gdatadatime.m

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top