2017-07-03 1 views
0

Im folgenden Code versuche ich NSString in NSDate zu konvertieren und noch einmal in ein anderes Datumsformat zu konvertieren und es an den Server zu senden.Falsche Uhrzeit beim Konvertieren von NSString in NSDate Wenn das Format der Gerätezeit 24h ist

Der folgende Code funktionierte einwandfrei, wenn das Gerätezeitformat 12 Stunden beträgt. mit Datumformat zu [dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"]; gibt es mir Datum und Uhrzeit korrekt.

Aber sobald ich Gerätezeitformat auf 24 Stunden änderte. und ändern Sie den Datefomatter zu [dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm a"]; gibt es falsches Datum und Uhrzeit (speziell Zeit.) Ich hatte Protokollwerte für Code angezeigt.

Ich hatte viele Stackoverflow Fragen bezüglich NSDateFormatter und Umwandlung von NSString zu NSDate überprüft. Aber ich bin nicht in der Lage herauszufinden, wo ich Fehler mache und warum es mir eine falsche Zeit gibt, wenn mein Gerätezeitformat 24 Stunden ist. Bitte helfen Sie mir, dies zu lösen.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"dd-MMM-yyyy HH:mm a"]; 
NSString *fromTime = [NSString stringWithFormat:@"%@",@"04-Jul-2017 01:46 PM"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:fromTime]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
NSString *setdtFrom=[dateFormatter stringFromDate:dateFromString]; 
NSLog(@"From DateTime %@",setdtFrom); 

Nach Protokoll mit Datum und Uhrzeit Wenn Format My Device Zeit 12hr ist. Und es ist richtig.
Von Datetime 2017-07-04T13: 46: 00

Zeit, wenn mein Gerät Zeitformat 24 h ist. Und es ist falsch (speziell Zeit).
Von Datetime 2017-07-04T12: 46: 00

+0

Umwandlung 24 Stunden-Format keine Notwendigkeit von 'a' in der Format-String –

+1

Ihr Code Fehler . HH ist 24 Stunden Format. Aber du fügst hinten etwas hinzu. Sie sollten stattdessen hh verwenden. – GeneCode

+0

@DSDharma Wenn ich "a" entferne, gibt es null Datum. Versuchen Sie diesen Code mit Zeitformat 24 Stunden. in deinem Gerät. –

Antwort

0

Bitte versuchen Sie es locale Einstellung & Zeitzone

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MMM-yyyy hh:mm a"]; 
    [dateFormatter setLocale: [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"]]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
    NSString *fromTime = [NSString stringWithFormat:@"%@",@"04-Jul-2017 01:46 PM"]; 
    NSDate *dateFromString = [dateFormatter dateFromString:fromTime]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; 
    NSString *setdtFrom=[dateFormatter stringFromDate:dateFromString]; 
    NSLog(@"From DateTime %@",setdtFrom); 
+1

Einstellung Gebietsschema ist wichtig. Danke für die Hilfe, korrekte Antwort +1 für die Lösung. –