Как в Java перевести строку в дату (Date или LocalDate)

java.util.Date

Преобразовать строку с датой или датой временем в java.util.Date довольно просто.

//Только дата
Date onlyDate = new SimpleDateFormat("yyyy-MM-dd").parse("2020-07-30");
//Дата и время
Date dateAndTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-07-30 19:30:45");

Метод parse() выбрасывает проверяемое исключение java.text.ParseException, поэтому хоть дату и возможно получить всего одной строкой, скорее всего код в итоге будет более громоздким.

java.time.LocalDate

LocalDate localDate = LocalDate.parse("2020-07-30");

Метод parse() принимает строку вида ГГГГ-ММ-ДД. Такой формат соответствует ISO 8601 и очень распространён в том числе в базах данных. Метод parse() выбрасывает непроверяемое исключение java.time.format.DateTimeParseException. Поэтому код будет менее громоздким, но во время выполнения возможны сюрпризы.

Также можно воспользоваться классом DateTimeFormatter, чтобы использовать любой формат даты/времени, а не только ГГГГ-ММ-ДД.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
String date = "28.02.2020";
LocalDate localDate = LocalDate.parse(date, formatter);

java.time.LocalDateTime

Здесь всё точно также, как и с java.time.LocalDate:

//Без DateTimeFormatter'а. Время в строке отделяется от даты заглавной латинской буквой TLocalDateTime localDateTime = LocalDateTime.parse("2020-02-28T12:30:10");

//В несколько строк:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String date = "2020-07-30 19:30:45";
LocalDateTime localDateTime = LocalDateTime.parse(date, formatter);

//Можно и в одну строку:
LocalDateTime localDateTime = LocalDateTime.parse("2020-07-30 19:30:45", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));