Мое приложение вызывает ленту Twitter и ленту блога, конечно, обе содержат дату публикации. Когда мой телефон настроен на английский язык, он работает, когда я переключаюсь на голландский или немецкий, он не работает. Рассматриваемый код даже не обращается к локали, и входные значения также не зависят от локали.
Код нарушения:
tweets — это JSONObject, содержащий полную ленту Twitter.
final SimpleDateFormat formatter =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
final SimpleDateFormat parser =
new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
for (int i = 0; i < tweets.length(); i++) {
final JSONObject tweet = tweets.getJSONObject(i);
// The following line is where the failure occurs:
values.put(KEY_TWEET_DATE, formatter.format(parser.parse(tweet
.getString("created_at"))));
}
Это работает, пока мой язык английский.
Как только я переключаюсь на немецкий или голландский (в моем приложении есть переводы для этих двух языков, я пока не пробовал ни один другой), я получаю такую ошибку:
WARN/System.err(28273): java.text.ParseException: Unparseable date: Wed Jun 29 10:55:41 +0000 2011
WARN/System.err(28273): at java.text.DateFormat.parse(DateFormat.java:645)
WARN/System.err(28273): at squirrel.DeaddropDroid.DeaddropDB.updateTwitter(DeaddropDB.java:1453)
«Неразборная дата» — это правильная дата в ожидаемом формате. Моя строка формата предназначена для анализа этой точной даты. И, как уже говорилось, когда я переключаю свой телефон на английский язык, он работает нормально. Это тот же код: ошибка возникает, даже когда я переключаю локаль во время работы приложения, и исчезает, когда я переключаю локаль обратно.