Вот современный ответ.
private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-uuuu");
public static String doConvert(String d) {
return LocalDate.parse(d).format(formatter);
}
С этим мы можем сделать, например:
System.out.println(doConvert("2017-06-30"));
Это печатает
30-06-2017
Я использую тот факт, что имеющийся у вас формат, YYYY-MM-DD
, соответствует стандарту ISO 8601, стандарту, который современные классы даты и времени Java «понимают» изначально, поэтому нам не нужен явный форматер для анализа, только один для форматирования.
Когда этот вопрос был задан в 2011 году, SimpleDateFormat
был также ответом, который я бы дал. Более новый API даты и времени вышел с Java 8 в начале 2014 года, а также был перенесен на Java 6 и 7 в проекте ThreeTen-Backport. Для Android см. Проект ThreeTenABP. Поэтому в наши дни, честно говоря, я не вижу оправдания для использования SimpleDateFormat
и Date
. Новые классы намного удобнее для программистов и с ними приятно работать.