Преобразование NSDate в NSString с помощью NSDateFormatter с помощью TimeZone без модификатора времени GMT
Я инициализирую свой 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"];
Ответы
Ответ 1
Удалите конечный символ "z" из строки формата, если вы не хотите отображать часовой пояс.
ИЗМЕНИТЬ
С другой стороны, если вы просто хотите отобразить имя часового пояса, просто введите "z" в верхний регистр. ((отредактируйте: оставьте "z" в нижнем регистре для именованного часового пояса, то есть PST и в верхнем регистре "Z" для -0800))
ИЗМЕНИТЬ
Нижний регистр "z" отлично подходит для всех других часовых поясов, но, к сожалению, GMT - это особый случай. Поэтому проще всего просто опустить "z" и добавить "GMT" к отформатированной дате.
Ответ 2
Принятый ответ имел опечатку.
С другой стороны, если вы просто хотите отобразить имя часового пояса, просто введите "z" в верхний регистр.
оставить "z" нижний регистр для именованного часового пояса, то есть 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