Как исправить «исключение разбора даты и времени» в Java - PullRequest
2 голосов
/ 08 апреля 2019

У меня есть средство форматирования даты и времени, которое я пытаюсь отформатировать введенные даты в формате (д / мм / гггг), показанном ниже

DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy");

Затем я использую этот форматер для ввода данных пользователем в датуbirth как String, а затем пытается проанализировать это, чтобы сохранить как переменную LocalDate с temp, сохраняющим введенную пользователем дату рождения

public void addCustomer() throws ParseException {
        customerID++;
        //Create Scanner
        Scanner scan = new Scanner(System.in);

        //Take user input
        System.out.println("Please enter your name: ");
        String name = scan.nextLine();
        System.out.println("Please enter your Date of Birth(dd/MM/yyyy): ");
        String temp = scan.nextLine();
        LocalDate date = LocalDate.parse(temp);
        Customer c = new Customer(customerID, name, date, false, "N/A");
        customers.add(c);
    }

Однако это всегда возвращает DateTimeParseException: Text не может проанализировать.Проблема в том, как я настраиваю форматирование даты и времени, чтобы всегда вызывать это исключение?Показано ниже

Exception in thread "main" java.time.format.DateTimeParseException: Text '27/01/1999' could not be parsed at index 0
    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
    at java.base/java.time.LocalDate.parse(LocalDate.java:428)
    at java.base/java.time.LocalDate.parse(LocalDate.java:413)
    at BikeNow.addCustomer(BikeNow.java:153)
    at BikeNow.main(BikeNow.java:98)

Ответы [ 2 ]

4 голосов
/ 08 апреля 2019

Передайте свой DateTimeFormatter объект.

Изменить это:

LocalDate date = LocalDate.parse(temp);

… к этому:

LocalDate date = LocalDate.parse(temp, format);
2 голосов
/ 08 апреля 2019

Я думаю, что вы забыли параметр, вот исправление:

public void addCustomer() throws ParseException {
        customerID++;
        //Create Scanner
        Scanner scan = new Scanner(System.in);

        //Take user input
        System.out.println("Please enter your name: ");
        String name = scan.nextLine();
        System.out.println("Please enter your Date of Birth(dd/MM/yyyy): ");
        String temp = scan.nextLine();

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate date = LocalDate.parse(temp, formatter);
        Customer c = new Customer(customerID, name, date, false, "N/A");
        customers.add(c);
}
...