При попытке преобразовать формат даты я получаю exception:unparseable дату и не знаю, как решить эту проблему.
Я получаю строку, которая представляет дату события и хотела бы отобразить эту дату в другом формате в GUI.
То, что я пытался сделать, следующее:
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
и пример входной строки следующий:
04.01.2010 1:32:27 UTC
Делает любой знает, как преобразовать дату в качестве примера (Строка) выше в Формат строки dd. MM.yyyy HH:mm:ss?
Спасибо!
Править: Я зафиксировал неправильный входной формат даты, но тем не менее он не работает. Выше вставляемый метод, и ниже отображаемое изображение от сеанса отладки.
сопроводительный текст http://img683.imageshack.us/img683/193/dateproblem.png
#Update я работал
String[] timezones = TimeZone.getAvailableIDs();
и в массиве существует Строка UTC. Это - странная проблема.
Я сделал грязный взлом, который работает:
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.
] Здесь вы в основном полагаетесь на [][] Date#toString()[
][] , которая уже имеет фиксированный паттерн. Для преобразования объекта Java []Date[
] в другой читаемый человеком строковый шаблон, вам понадобится [][]SimpleDateFormat#format()[
][].[
private String modifyDateLayout(String inputDate) throws ParseException{
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").parse(inputDate);
return new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date);
}
]
[]Кстати, исключение "невыносимая дата" может здесь []только [] быть сброшено с помощью [][]SimpleDateFormat#parse()[
][]. Это означает, что []inputDate[
] не находится в ожидаемом паттерне [] "yyyy-MM-dd HH:mm:ss z"[
]. Вам, вероятно, придется изменить шаблон, чтобы он соответствовал фактическому шаблону []inputDate[
].[
][]Update:[] Хорошо, я провел тест:[
] [public static void main(String[] args) throws Exception {
String inputDate = "2010-01-04 01:32:27 UTC";
String newDate = new Test().modifyDateLayout(inputDate);
System.out.println(newDate);
}
]
[]Это правильно печатает:[
] [03.01.2010 21:32:27
]
[](я на GMT-4)[
] [][]Update 2:[] согласно вашему редактированию, у вас действительно есть []ParseException[
] на этом шаблоне. Самой подозрительной частью будет часовой пояс []UTC[
]. Действительно ли это [] известно [] в вашей Java среде? Какую версию Java и какую версию операционной системы вы используете? Проверьте [][]TimeZone.getAvailableIDs()[
][]. Между ними должна быть []UTC[
].[