Ich habe einen Server, der die Zeiten der Daten zwischen Benutzern in einer mySQL-Datenbank mit NOW() speichert, um die Uhrzeit einzustellen. Ich versuche, die Zeit auf die lokale Zeit des Empfängers zu konvertieren, aber nicht viel Glück (ich würde die Zeit vor dem Speichern konvertieren, aber wie ich sage, ich möchte die Zeit für den Empfänger, nicht der Absender sein). Das Datum für die App als String zurückgegeben wird, und ich habe versucht, es wie folgt anzupassen:iOS - Konvertieren eines Datums von einem mySQL-Server in Benutzer lokale Zeit
NSString *string1 = [[receivedMessages objectAtIndex:thisRow]objectAtIndex:2];
NSDate *messageDate;
NSCalendar* cal = NSCalendar.currentCalendar;
NSTimeZone* tz = cal.timeZone;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM dd yyyy hh:mma"];
[formatter setTimeZone:tz];
messageDate = [formatter dateFromString:string1];
Es ist der Art des Datumsformats, aber nicht korrekt. Ein Datum, das von der App als empfangen wird:
April 5 2012 5:49AM
umgewandelt wird:
2012-04-05 04:49:00 +0000
Ich frage mich, wie Xcode funktioniert die Zeitzone das Datum gehörte in erster Linie?
Eigentlich habe ich nur getestet es wieder
mitNSTimeZone *pst = [NSTimeZone timeZoneWithAbbreviation:@"PST"];
anstelle von
NSCalendar* cal = NSCalendar.currentCalendar;
NSTimeZone* tz = cal.timeZone;
und es gibt mir noch die Zeit als 2012-04-05 04.49.00 + 0000.
Wer hat irgendwelche Ideen?
Vielen Dank
Ich bin mir nicht sicher, ich folge dir vollständig. Es könnte für mich einfacher sein zu erklären, wie es im Moment funktioniert. Wenn ein Benutzer seine Daten sendet, ist die aufgezeichnete Zeit die Uhrzeit auf dem Server - also GMT. Aber wenn der Absender in New York ist und der Empfänger in Tokio ist, dann ist GMT nicht gut für den Empfänger, noch ist die Zeit in NYC. Also muss ich die GMT-Zeit für die lokale Zeit des Benutzers konvertieren - aber ich sehe nicht, wie localizedStringFromDate das tun würde. Soweit ich das beurteilen kann, dient es nur dazu, die Struktur des Datums zu formatieren - ohne seine Werte zu ändern? Oder habe ich missverstanden, wie man es benutzt? – TheBestBigAl
Wenn Sie das Datum vom Server abrufen, was ist das Format? String ISO 8601: '2012-02-28T09: 13: 23Z', Regulärer String:' 5. April 2012 12:34 ', POSIX: '123582342'? – Stephen
Es sieht genau so aus: 2012-04-05 16:14:00, sieht am meisten wie die IOS 8601-Version aus, aber ich habe keine T oder Z's drin – TheBestBigAl