java использовать simpledateformat для разбора входной String get ParseException, и только из-за пробела - PullRequest
0 голосов
/ 09 апреля 2020

Я ввожу строку в соответствии с заданным шаблоном SimpleDateFormat, но это будет ParseException. Я делаю несколько тестов. Если я поменяю пробел между "dd HH" на "dd-HH", шаблон станет "yyyy-MM-dd-HH: mm: ss", и он будет успешным. Второй тест - я пишу строку прямо как String birthdays = "1998-08-12 12:12:12"; и анализирую ее, она также будет успешной. поэтому мой вывод заключается в том, что введенное мной пространство не совпадает с пространством в шаблоне. я использовал IntelliJ.

        SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Scanner sc = new Scanner(System.in);
        System.out.println("Please input your birthday. the pattern is " +
                "yyyy-MM-dd HH:mm:ss");
        String birthday = sc.next();
        Date date2 = datef.parse(birthday);
//        String birthdays = "1998-08-12 12:12:12";
//        Date date2 = datef.parse(birthdays); //this will successful
        System.out.println(date2);

1 Ответ

1 голос
/ 09 апреля 2020

Вместо использования s c .next () используйте s c .nextLine ()

s c .next () найдет первую строку до пробела, но nextLine () примет вся строка, включая пробел.

Эта проблема не из-за пробела.

...