2016-09-02 1 views
0

Ich habe diesen Code eine Zeichenfolge Datum zu konvertieren:iOS Umwandeln von Strings bisher: Stunde ist das gleiche auf zwei verschiedenen Zeiten

NSString* strToConvert; 
NSDate* dtToReturn; 
//...code to parse string 
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"MM/dd/yy, HH:mm:ss a"]; 
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

    dtToReturn = [dateFormatter dateFromString:strToConvert]; 

ich es senden Sie diese Zeichenfolge „08/30/16 02.22: 12.00“

und es gibt dieses Datum: 2016-08-30 16:22:00 +0000

der erwartet wird, da ich 4 von GMT

Aber wenn ich es diese Zeichenfolge senden : "08/30/16 03:22:00 PM"

es gibt das gleiche Datum: 2016-08-30 16:22:00 +0000

ich nur zu einem Zeitpunkt, zu dem Verfahren ein String übergeben. Mache ich etwas falsch in meinem Dateformatter?

+1

Anstelle von HH, verwenden Sie hh – azimov

+1

BTW, erster Fall ist auch falsch, 16:22:00 in AM/PM Format konvertiert ist 4:22:00 PM, was bedeutet +2 GMT, nicht +4 GMT – azimov

+1

ug, Freitag vor einem Feiertag, funktioniert das Mathe-Fu nicht. : D Aber Ihre Lösung hat funktioniert! Danke für die Hilfe! – PruitIgoe

Antwort

1

Da strToConvert die AM/PM-Stundenzeit und das Datum verwendet, das der Formatierer 24 Stunden verwendet, führt dies zu einer falschen Datumsumwandlung. Fix Datum Formatierer dateFormat zur Verwendung AM/PM Stunde Zeit: @"MM/dd/yy, hh:mm:ss a"

Verwandte Themen