Преобразование String в Date на Java — LocalDate.parse и SimpleDateFormat

В Java преобразовать строку в дату можно с помощью класса LocalDate и метода parse(). Форматтер DateTimeFormatter указывает, в каком формате записана исходная строка.

Чтобы понять этот пример, нужно знать:

  • Строки в Java

  • Базовый ввод и вывод в Java

Пример 1: преобразование строки в дату с предопределённым форматтером

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class TimeString {

    public static void main(String[] args) {
        // Format y-M-d or yyyy-MM-d
        String string = "2017-07-25";
        LocalDate date = LocalDate.parse(string, DateTimeFormatter.ISO_DATE);

        System.out.println(date);
    }
}

Вывод:

2017-07-25

В этой программе мы использовали предопределённый форматтер ISO_DATE, который принимает строку в формате 2017-07-25 или 2017-07-25+05:45. Метод parse() класса LocalDate разбирает строку с помощью указанного форматтера.

Пример 2: преобразование строки в дату по шаблону

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class TimeString {

    public static void main(String[] args) {
        String string = "July 25, 2017";

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
        LocalDate date = LocalDate.parse(string, formatter);

        System.out.println(date);
    }
}

Вывод:

2017-07-25

В этой программе наша дата задана в формате MMMM d, yyyy. Мы создали форматтер с этим шаблоном и передали ему явную локаль Locale.ENGLISH, чтобы название месяца July корректно распозналось. Метод LocalDate.parse() разобрал строку и вернул объект LocalDate.