Konvertieren NSDate zu NSString mit NSDateFormatter mit Time-Zone ohne GMT Zeit Modifier
-
02-10-2019 - |
Frage
Ich bin Initialisierung meines NSDateFormatter so:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date = [NSDate date];
NSString *dateString = [dateFormatter stringFromDate:date];
dateString
ist jetzt:
Thu, 29 Jul 2010 14:58:42 GMT+00:00
Ich möchte loswerden der "+00: 00" erhalten
Ich vermute, von http://unicode.org/reports/tr35 /tr35-6.html#Time_Zone_Fallback , ich könnte ein Lokalisierungs Problem. Ich arbeite, um diese im Augenblick durch das Entfernen. „+00: 00“ von Hand, aber das ist nicht ideal
Bearbeiten
Ich habe versucht, ein paar neue Möglichkeiten, um die NSTimeZone zu schaffen, aber sie beide produzieren die gleiche dateString
:
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
Lösung
Entfernen Sie die hinteren ‚z‘ Zeichen aus dem String-Format, wenn Sie nicht möchten, die Zeitzone angezeigt werden soll.
Bearbeiten
Auf der anderen Seite, wenn Sie wollen einfach nur die Zeitzone Namen angezeigt werden, so stellen die ‚z‘ in Großbuchstaben. ((Edit: Verlassen Sie die 'z' Klein für benannte Zeitzone, das heißt PST und Großbuchstaben 'Z' für -0800))
Bearbeiten
Klein ‚z‘ funktioniert gut für alle anderen Zeitzonen, aber leider ist GMT ein Sonderfall. So ist die einfachste Sache zu verzichten ist zu tun, nur die ‚z‘ und append „GMT“ auf dem formatierten Datum.
Andere Tipps
akzeptierte Antwort hatte einen Tippfehler.
Auf der anderen Seite, wenn Sie nur die Zeitzone Namen angezeigt werden sollen, so stellt den ‚z‘ groß geschrieben.
verlassen den 'z' Klein für benannte Zeitzone, das heißt PST und Großbuchstaben 'Z' für -0800
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMMM dd, yyyy (EEEE) HH:mm:ss z Z"];
NSDate *now = [NSDate date];
NSString *nsstr = [format stringFromDate:now];
// 23. Januar 2013 (Mittwoch) 00.33.46 PST -0800