NSDateFormatter дает разные значения на устройстве и симуляторе? Что обходится?

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

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Хотя другой ответ, упомянутый выше, технически верен, он не дает того решения, которое вы ищете. В то время как 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];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top