Ich habe dieses Problem, wo die richtige Zeit verstrichen ist, aber sobald es die [formatter setDateFormat:date]
trifft, kommt es in einer anderen Zeitzone heraus. Hier ist ein AusschnittKonvertieren Sie Zeit in Ortszeit in Objective-C
NSDate* date = user.startDate;
NSDateFormatter *format = [[NSDateFormatter alloc] init];
NSLog(@"-------> (1) time is %@", date);
NSLog(@"-------> (2) time is %@", date);
[format setDateFormat:@"h:mm a"];
NSLog(@"-------> (3) time is %@", date);
NSLog(@"-------> (4) time is %@", [format stringFromDate:date]);
Hier wird der Debugger-Ausgabe für die Log-Meldungen
-------> (1) time is 2016-06-30 09:25:17 +0000
-------> (2) time is 2016-06-30 09:25:17 +0000
-------> (3) time is 2016-06-30 09:25:17 +0000
-------> (4) time is 2:25 AM
ich die Ausgabe für (4)
erwarten sein time is 9:25 AM
Ich entfernte Code, der für Ihre Frage irrelevant ist (die doppelten Zeilen wurden jedoch beibehalten, damit die Referenzen in den Antworten gültig bleiben). – Eiko
Beachten Sie, dass (1), (2), (3) genau das Gleiche tun. Das Datum ist unveränderlich und die gleiche Instanz, und Sie verwenden keinen Formatierer. – Eiko