2011-01-13 4 views
5

Ich habe mein Gehirn ohne Glück zerschlagen. Könnte mir bitte jemand sagen, wie ich diese Zeichenfolge konvertieren würde:Wie wird ein NSString in NSDate umgewandelt?

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

in eine NSDate?

+1

Check this out: http://stackoverflow.com/questions/1353081/nsstring-to-nsdate – lms

Antwort

20

Die Unicode-Datumsformat doc here

ist auch für Ihre Situation, könnte man dies versuchen:

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

Hoffnung das hilft.

+0

Danke das ist perfekt. Die Zeitzone in einfachen Anführungszeichen wurde nicht erwartet, aber was wurde behoben :) – jennas

+0

konnte nicht herausfinden, dass 'T' in der Mitte. Das hat also geholfen. Vielen Dank! – user1244109

1

Haben Sie versucht, diese

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

Prost

+0

Hallo, Ja, ich habe diese NSDateFormatter * DatumFormatter = [[NSDateFormatter Alloc] Init]; NSDate * dateT = [DatumFormatter dateFromString: @ "2011-01-13T17: 00: 00 + 11: 00"]; NSLog (@ "date From string:% @", dateT); Dies gibt (null) – jennas

+0

Dies wird Ihnen helfen http://stackoverflow.com/questions/4655199/how-to-set-date-format-retrieved-from-uidatepicker/4655297#4655297 – Aditya

+0

Dies ist falsch, funktioniert nicht überhaupt, gibt nil date. –

3

die T Teil in einfache Anführungszeichen setzen, und überprüfen Sie die Unicode-Dokumentation für die genaue Formatierung. In meinem Fall habe ich etwas ähnliches, was ich das mache:

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

Nochmal nicht genau dasselbe, aber man kommt auf die Idee. Achten Sie auch auf die Zeitzonen beim Konvertieren zwischen Strings und Nsdates.

Auch in meinem Fall verwende ich:

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

Hallo, ich setze [NSTimeZone systemTimeZone] welche die richtige Zone ist. Das Folgende gibt immer noch null verdammtes Ding zurück![dateFormatter setDateFormat: @ "jjjj-MM-dd'T'hh: mm: ssSSS"]; – jennas

+0

Das war für meinen Code, Sie müssen etwas ähnliches für Ihren Code tun. Überprüfen Sie erneut die UNICODE-Dokumente. – tbone

0

Sie können TouchTime ausprobieren.

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

Es ist ein direkter Port der fantastischen strtotime Funktion in PHP in 5.4 für Cocoa und iOS. Es nimmt so ziemlich jedes willkürliche Datums- oder Zeitformat an und konvertiert es in ein NSDate.

Hoffe es funktioniert, und viel Spaß!

0

Versuchen Sie, dieses Cocoapods-fähige Projekt zu verwenden. Es gibt viele zusätzliche Funktionen, die wahrscheinlich auch benötigt werden.

"Eine Kategorie, um Cocoas NSDate Klasse mit einigen Komfortfunktionen zu erweitern."

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

Hier ist ein Beispiel von ihrer Seite:

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

Suchen Sie auch meistens nach Utilities auf Cocoapoden. Hier ist die Abfrage zu NSDate. http://cocoapods.org/?q=NSDate –