formato di data per 2008-02-01T10: 03: 23,793-06: 00
-
26-09-2019 - |
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
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.