2014-10-07 11 views
7

Ho visto l'altra risposta e domanda ma non ho trovato alcuna risposta utile per me. Ho una stringa come 2014-10-07T07:29:55.850Z e voglio avere una data per confrontarci a vicenda. Se io uso questo codice:Converti stringa alla data Obiettivo-C

NSString *fullDate = payload[@"sent_ts"]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
dateFormat setDateFormat:@"yyyy-MM-ddTHH:mm:ss.SSSZ"]; 
NSDate *date = [dateFormat dateFromString:fullDate]; 

mia data è pari a zero. Perché?

+0

Hai un punto dopo i secondi ... non i due punti. Guarda più attentamente la stringa di formato prima di pubblicare una domanda>< – borrrden

+0

L'ho visto, ma sfortunatamente non è l'errore. – fustalol

+1

Inserisci virgolette singole attorno al T – borrrden

risposta

15

Prova questo.

NSString *dateString = @"2014-10-07T07:29:55.850Z"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"]; 
    NSDate *date = [dateFormatter dateFromString:dateString]; 
+0

Funziona con virgolette singole su T e non su Z. Perché? – fustalol

+0

@fustalol - la Z è un formattatore di tempo valido: http://www.deanoj.co.uk/ios-development/nsdateformatter-formatting-strings-reference/ – foldinglettuce

+0

Funziona. Grazie. –