2016-03-18 5 views
-2

Ich erhalte Datum im NSString-Format "2016-03-16T00: 00: 00.000 + 05: 30" Ich verwende die folgende Methode, um NSString-Datum in das richtige NSDate-Format zu konvertieren, und es gibt null zurück.Datum im NSString-Format, das null iOS zurückgibt?

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ssZZZ"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

dateFromString = [dateFormatter dateFromString:dateString]; 

//dateFromString returns null. 

Pls helfen

i mit diesem Code aktualisiert haben

NSString *strDateFor = [polygon valueForKey:@"effective_from"]; 
    NSDateFormatter *dateformate=[[NSDateFormatter alloc]init]; 
    [dateformate setDateFormat:@"yyyy-MM-dd 'T' HH:mm:ss ZZZZ"]; 
    NSDate *date = [dateformate dateFromString:strDateFor]; 
    NSLog(@"date : %@",date); //null 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 
    [dateFormat setDateFormat:@"dd-MM-yyyy"]; 
    NSString *strDate = [dateFormat stringFromDate:date]; 
    NSLog(@"The strDate is - %@", strDate); //null 

wieder null

+0

Wie soll ich das korrigieren ??? – Bangalore

+1

Vergleichen Sie die Zeichenfolge und das Format. Sie stimmen nicht überein. – gnasher729

Antwort

2

Zunächst einmal, die Zeile:

NSDate *dateFromString = [[NSDate alloc] init]; 

nicht macht Sinn, weil du es nicht bist Verwenden Sie die NSDate Instanz, die Sie hier erstellen. Lass es einfach aus.

Zweitens immer setzen die locale Datum des Formatierer, wenn Sie ein Datum Zeichenfolge wie folgt analysieren. Standardmäßig verwendet NSDateFormatter das aktuelle Gebietsschema des Benutzers, was alles sein kann, sodass Sie sich nicht darauf verlassen können. Wahrscheinlich möchten Sie das Gebietsschema en_US_POSIX, da es sich in der Zukunft garantiert nicht ändert.

Drittens ist Ihre Datumsformat-Zeichenfolge falsch, weil Sie die Sekundenbruchteile nicht angegeben haben (.SSS).

Dies funktioniert:

NSString *dateString = @"2016-03-16T00:00:00.000+05:30"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSZZZ"]; 
NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
+0

ja, es funktioniert. wenn ich nur einen datumsteil möchte, was soll ich tun? – Bangalore