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"];
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top