Локализация и дата - PullRequest
1 голос
/ 16 января 2012

Я не могу понять, почему следующий фрагмент кода работает, только если я установил формат региона в США.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss zzz"];
NSDate *date = [dateFormatter dateFromString:currentFeedPubDate];
NSLog(@"%@", date);

В противном случае возвращается «(ноль)».

Может кто-нибудь помочь мне выяснить, почему?

Ответы [ 3 ]

2 голосов
/ 16 января 2012

Как уже отмечал Krizz, проблема в том, что локализованные имена не будут совпадать. Например, если вы передаете ему дату, например Sun, 15 Jan 2012 22:52:00 GMT+1, и телефон в настоящее время настроен на немецкий язык, он не распознает Sun, поскольку будет искать сокращение названия дня недели на немецком языке, но не найдет его.

Если вы знаете, в каком формате локали будет входная строка, вы можете (и должны) принудительно установить локаль в вашем устройстве форматирования даты следующим образом:

[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];
2 голосов
/ 16 января 2012

Какой у тебя currentFeedPubDate?Вероятно, это что-то вроде Sun, 15 Jun 2012 22:31:30 GMT+1, верно?

Теперь, обратите внимание, что хотя в Соединенных Штатах языковой стандарт MMM будет примерно таким же, как Jan (из английского января), в польском языковом языке он будет Sty (от польского Styczeń, название для января) и, следовательно, ваша строка не будет совпадать.

0 голосов
/ 16 января 2012

Кроме того, существует проблема, с которой вы можете столкнуться, если кто-то переключит настройку 12/24 в настройках своего телефона.Эта проблема обсуждается в этой теме .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...