Domanda

Nel mio progetto sto ottenendo "2008-02-01T10: 03: 23,793-06: 00" questo formato di data nella stringa devo convertire in NSDate sto 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"];

Ma quando io sono di stampa valore di data utilizzando NSLog sto ottenendo valore nullo.

Si prega di aiutarmi

Grazie

È stato utile?

Soluzione

NSDateFormatter non sarà in grado di analizzare, perché il fuso orario non è conforme con RFC 822 o GMT di serie . Il problema è l'ultima ":". Averlo è necessario il "GMT"

La data che avete rispetta la RFC 3339 .

Sarà necessario utilizzare un NSFormatter per analizzarlo. Si dovrebbe usare getObjectValue:forString:errorDescription:

Impostare la @"yyyy-MM-dd'T'HH:mm:ss.SSSZ" stringa.

Altri suggerimenti

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

(Non so se lì per lì è necessaria la setLenient.)

uso Solo che invece (notare il "ZZZ" invece di "Z"):

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

Credo che è necessario impostare un locale per il formattatore troppo. Dai un'occhiata qui

GData Google Objective-C Client ha una classe (GDataDateTime) in grado di analizzare RFC 3339 date.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top