NSDateFormatter дает разные значения на устройстве и симуляторе? Что обходится? - PullRequest
5 голосов
/ 26 ноября 2009

Я использую NSDateFormatter, проблема в его согласованности. Если я использую kCFDateFormatterMediumStyle, он дает формат «26 ноября 2009» в симуляторе, а на устройстве - «26 ноября 2009».

Теперь у меня есть вопрос, означает ли это надежное средство NSFormatter в ближайшем будущем или обновления от Apple, он может снова изменить стиль?

Ответы [ 2 ]

17 голосов
/ 26 ноября 2009

Хотя другой ответ, упомянутый выше, технически верен, он не дает вам решения, которое вы ищете. Хотя NSDateFormatter по умолчанию использует пользовательские языковые стандарты (и, следовательно, не даст вам полезных результатов), вы можете запросить конкретный языковой стандарт для получения согласованных результатов:

NSDateFormatter *frm = [[NSDateFormatter alloc] init];
[frm setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"];

NSLocale *en_US = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[frm setLocale:en_US];
[en_US release];
3 голосов
/ 26 ноября 2009

NSDateFormatter форматирует дату в соответствии с предпочтениями пользователя, основываясь на международных настройках на устройстве. Таким образом, вы никогда не сможете ожидать, что эта строка будет согласованной из-за большого количества различных способов отображения дат по всему миру.

Я обнаружил, что лучший способ отформатировать дату в виде строки (чтобы использовать ее для предоставления веб-серверам и т. Д.) - это использовать NSDateComponents и преобразовать их в строки.

...