Это не для меня - возможно, в вашей локали по умолчанию используются разные названия месяцев?Укажите языковой стандарт для формата.
// Will definitely work
DateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy",
Locale.US);
// Will definitely not work
DateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy",
Locale.FRANCE);
// Might work - depends on default locale
DateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy")
(Проблема заключается в названиях дней недели и месяцев года, которые явно зависят от культуры. Разделители даты и времени также могут различаться.)
РЕДАКТИРОВАТЬ: Странно, что у вас все еще есть проблемы.Просто для проверки, пожалуйста, попробуйте запустить следующую короткую, но полную программу:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class Test {
public static void main(String[] args) throws Exception {
DateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy",
Locale.US);
sdf.parse("Sun Dec 13 10:00:00 UTC 2009");
}
}
Если это не сработает, попробуйте удалить часть часового пояса как из шаблона, так и из текста.Интересно, есть ли у него проблемы с этим.
РЕДАКТИРОВАТЬ: Если реализации Android SimpleDateFormat
не удается проанализировать часовой пояс, вы, вероятно, можете просто использовать:
text = text.replace(" UTC ", " ");
Date parsed = sdf.parse(text);
.... установив часовой пояс на анализаторе в UTC, конечно.Возможно, вы сначала захотите проверить, что содержит"UTC", на случай, если ваш формат данных изменится.