2011-01-13 18 views
5

Ive mi sta tormentando il cervello senza fortuna. Qualcuno potrebbe dirmi come vorrei convertire questa stringa:Come trasformare una NSString in NSDate?

"2011-01-13T17: 00: 00 + 11: 00"

in una NSDate?

+1

controllo questo fuori: http://stackoverflow.com/questions/1353081/nsstring-to-nsdate – lms

risposta

20

Il formato della data unicode doc è here

Inoltre, per la vostra situazione, si potrebbe provare questo:

// original string 
NSString *str = [NSString stringWithFormat:@"2011-01-13T17:00:00+11:00"]; 

// convert to date 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
// ignore +11 and use timezone name instead of seconds from gmt 
[dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss'+11:00'"]; 
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]]; 
NSDate *dte = [dateFormat dateFromString:str]; 
NSLog(@"Date: %@", dte); 

// back to string 
NSDateFormatter *dateFormat2 = [[NSDateFormatter alloc] init]; 
[dateFormat2 setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZZZ"]; 
[dateFormat2 setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]]; 
NSString *dateString = [dateFormat2 stringFromDate:dte]; 
NSLog(@"DateString: %@", dateString); 

[dateFormat release]; 
    [dateFormat2 release]; 

Speranza questo aiuta.

+0

Grazie, questo è perfetto. Il fuso orario tra virgolette singole non era previsto ma era quello che lo fissava :) – jennas

+0

non riuscivo a capire che "T" nel mezzo. Quindi questo ha aiutato. Grazie! – user1244109

1

Hai provato questo

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSDate *dateT = [dateFormatter dateFromString:str]; 

Acclamazioni

+0

Ciao, sì ho questo NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; NSDate * dateT = [dateFormatter dateFromString: @ "2011-01-13T17: 00: 00 + 11: 00"]; NSLog (@ "data Da stringa:% @", dataT); Questo restituisce (null) – jennas

+0

Questo ti aiuterà http://stackoverflow.com/questions/4655199/how-to-set-date-format-retrieved-from-uidatepicker/4655297#4655297 – Aditya

+0

Questo è sbagliato, Non funziona del tutto, dà una data nulla. –

3

mettere la parte T tra virgolette singole, e verificare la documentazione unicode per la formattazione esatta. Nel mio caso, ho qualcosa di simile, che faccio questo:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
     [dateFormat setDateFormat:@"YYYY-MM-dd'T'HH:mm:ss.SSS"]; 

Ancora, non esattamente la stessa cosa, ma si ottiene l'idea. Inoltre, fai attenzione ai fusi orari quando converti avanti e indietro tra stringhe e nsdate.

Ancora una volta, nel mio caso, io uso:

[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]]; 
+0

Salve, im impostazione [NSTimeZone systemTimeZone] che è la zona corretta. Il seguente restituisce ancora qualcosa di maledetto![dateFormatter setDateFormat: @ "yyyy-MM-dd'T'hh: mm: ssSSS"]; – jennas

+0

Questo era per il mio codice, dovrai fare qualcosa di simile per il tuo codice. Di nuovo, controlla i documenti UNICODE. – tbone

0

È possibile controllare TouchTime.

https://github.com/jheising/TouchTime.

È una porta diretta della fantastica funzione strtotime in PHP in 5.4 per Cocoa e iOS. Prenderà praticamente qualsiasi formato arbitrario di stringa di data o ora e lo convertirà in un NSDate.

Spero che funzioni, e divertiti!

0

Prova a utilizzare questo progetto abilitato per cocoapods. Ci sono molte funzioni aggiunte che probabilmente saranno anche necessarie.

"Una categoria per estendere la classe NSDate di Cocoa con alcune funzioni di comodità."

https://github.com/billymeltdown/nsdate-helper

Ecco un esempio dalla loro pagina:

NSDate *date = [NSDate dateFromString:@"2009-03-01 12:15:23"]; 
+0

Inoltre, per lo più ricerca ora per utilità su cocoapods. Ecco la query su NSDate. http://cocoapods.org/?q=NSDate –

Problemi correlati