Как в Java перевести строку в дату (Date или LocalDate)
java.util.Date
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");java.time.LocalDate
Метод 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.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"));