Преобразовать NSDATE в NSString с NSDateFormatter с часовым поясом без модификатора Time GMT

StackOverflow https://stackoverflow.com/questions/3712140

Вопрос

Таким образом, я инициализации своего NSDateFormatter:

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 сейчас:

Thu, 29 Jul 2010 14:58:42 GMT+00:00

Я хочу избавиться от "+00: 00"

Я предполагаю http://unicode.org/reports/tr35/tr35-6.html#time_zone_fallback что у меня может быть проблема локализации. Я сейчас работаю над этим, удалив «+00: 00» вручную, но это не идеально.

РЕДАКТИРОВАТЬ

Я попробовал пару новых способов создания nstimezone, но они оба производят одинаковые dateString:

[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
Это было полезно?

Решение

Удалите следующий символ «Z» из строки формата, если вы не хотите отображать часовой пояс.

РЕДАКТИРОВАТЬ

С другой стороны, если вы просто хотите отобразить название часового пояса, просто сделайте верхний регистр. ((РЕДАКТИРОВАТЬ: Оставьте нижнюю строчку для по имени Timezone, IE PST и Overscare 'Z' для -0800)))

РЕДАКТИРОВАТЬ

Ничевцы 'Z' отлично работают для всех других часовых поясов, но, к сожалению, GMT - это особый случай. Так что самое простое, что можно сделать, это просто опустить «Z» и добавить «GMT» в отформатированную дату.

Другие советы

Принятый ответ был опечатка.

С другой стороны, если вы просто хотите отобразить название часового пояса, просто сделайте верхний регистр.

Оставьте нижнюю строчку для по имени Timezone, т.е. PST и прописное «Z» для -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 января 2013 г. (среда) 12:33:46 PST -0800

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top