Если вы используете Java 8, вы можете использовать нативную библиотеку Java Time, которая была разработана тем же человеком (Стивеном Колебурном), который создал Joda time.Анализировать и отображать даты в различных форматах довольно просто.
Похоже, ваша главная проблема заключается в том, что вы рассматриваете ожидаемый объект как LocalDateTime
, но времени нет.По сути, это приводит к тому, что ваш код пропускает ошибку времени выполнения, в которой говорится, что вам нужно включить время, поэтому вы должны использовать LocalDate
.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class StringToLocalDate {
public static String DATE_FORMAT_INPUT = "ddMMyyyy";
public static String DATE_FORMAT_OUTPUT = "yyyy-MM-dd";
public static void main(String[] args) {
System.out.println(formatted(convert("21022019")));
}
public static String formatted(LocalDate date) {
return date.format(DateTimeFormatter.ofPattern(DATE_FORMAT_OUTPUT));
}
public static LocalDate convert(String dateStr) {
return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(DATE_FORMAT_INPUT));
}
}
Если вам нужно использовать версию Java до 1.8, выможно использовать следующее.Это очень похоже.
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
public class StringToLocalDate {
public static String DATE_FORMAT_INPUT = "ddMMyyyy";
public static String DATE_FORMAT_OUTPUT = "yyyy-MM-dd";
public static void main(String[] args) {
System.out.println(formatted(convert("21022019")));
}
public static String formatted(LocalDate date) {
return date.toString(DateTimeFormat.forPattern(DATE_FORMAT_OUTPUT));
}
public static LocalDate convert(String dateStr) {
return LocalDate.parse(dateStr, DateTimeFormat.forPattern(DATE_FORMAT_INPUT));
}
}