При попытке преобразовать формат даты я получаю исключение: неподдерживаемая дата и не знаю, как исправить эту проблему.
Я получаю строку, которая представляет дату события, и хотел бы отобразить эту дату в другом формате в графическом интерфейсе.
То, что я пытался сделать, следующее:
private String modifyDateLayout(String inputDate){
try {
//inputDate = "2010-01-04 01:32:27 UTC";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").parse(inputDate);
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date);
} catch (ParseException e) {
e.printStackTrace();
return "15.01.2010";
}
}
В любом случае строка
String modifiedDateString = originalDate.toString();
является фиктивным. Я хотел бы получить строку даты в следующем формате:
dd.MM.yyyy HH: mm: ss
а пример строки ввода - следующий:
2010-01-04 01:32:27 UTC
Кто-нибудь знает, как преобразовать примерную дату (String) выше в формат String dd.MM.yyyy HH: mm: ss?
Спасибо!
Изменить: я исправил неверный формат даты ввода, но все же он не работает. Выше находится вставной метод, а ниже - изображение экрана из сеанса отладки.
alt text http://img683.imageshack.us/img683/193/dateproblem.png
автообновление Я побежал
String[] timezones = TimeZone.getAvailableIDs();
и в массиве есть строка UTC String. Это странная проблема.
Я сделал грязный хак, который работает:
private String modifyDateLayout(String inputDate){
try {
inputDate = inputDate.replace(" UTC", "");
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(inputDate);
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date);
} catch (ParseException e) {
e.printStackTrace();
return "15.01.2010";
}
}
Но все же я предпочел бы преобразовать исходный вход без сокращения часовой пояс.
Этот код написан для телефона Android с помощью JDK 1.6.