NSDateFormatter: wie konvertieren von Datums-string mit 'GMT' lokalen NSDate?
Brauche ich zum konvertieren eines Datums-string abgerufen, der von einem server, auf lokalen NSDate, der string sieht wie folgt aus:
"Fri, 30 Nov 2012 00:35:18 GMT"
Aber jetzt ist es Freitag, 30. Nov, 11:36 UHR, also wie wandle ich den string in eine sinnvolle lokale NSDate?
Fand ich:
iPhone: NSDate konvertieren GMT lokale Zeit
Aber wie es aussieht macht das Gegenteil.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass NSDate immer speichert das Datum intern in GMT. Sie verwenden dann eine Datumsformatierung, um einen string in Ihre lokale Zeitzone. In diesem Fall, beginnen Sie mit einer Zeichenfolge, so müssen verwenden Sie die Datums-formatter zu erstellen, die das Datum in den ersten Platz, und dann ist es wieder verwenden, um einen string in Ihre lokale Zeitzone (das ist er standardmäßig, wenn die Zeitzone nicht angegeben).
NSDateFormatter
behält sich das Recht zu ändern, Ihre genaue Formatierungs-string.en_US_POSIX
ist wichtig beim arbeiten mit festem format Datum/Zeit-strings. Ohne es, es ist möglich das format geändert wird, hinter Ihrem Rücken basierend auf Dinge wie die user die 24-Stunden-Einstellung (als ein Beispiel). Festlegen der locale-Einstellung hat keine Auswirkung auf das format der Zeitzone. Finden Sie die QA1480, dass @Tommy auf die in seiner Antwort.en_US
. Wenn ich dabei bin, um diese string zu einem user, habe ich will es der Respekt gegenüber den Benutzern, die 24-Stunden-Einstellung, sowie alles, was angegeben ist. Wenn ich die Konvertierung von von ein Datum-format (wie in diesem Beispiel) das Datumsformat legt das format zu erwarten, und es nicht darauf ankommt, was der user angegeben hat, in seine Vorlieben.... Bin ich Missverständnis hier etwas??Verwenden Sie einfach
NSDateFormatter
mit den Formatierungs-stringeee, dd MMM yyyy HH:mm:ss zzz
. Der Zs am Ende dazu, dass es Lesen Sie die Zeitzone aus der string.So, da QA1480, Beispiel-code:
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; [dateFormatter setTimeZone:gmt];
warum benötigen Sie dies nicht?zzz
Komponente des Datum-format, die Sie sich gesetzt haben, wird Ihnen sagenNSDateFormatter
zu benutzen, was Ihren string gibt an, eher als was auch immer es vertritt die Auffassung, die norm zu sein.