java .text.ParseException: не разбираемая дата при наборе даты в консоли затмения - PullRequest
2 голосов
/ 12 января 2020

Я разрабатываю код для преобразования предоставленного времени даты в время по Гринвичу. Когда я предоставляю дату и время в коде в соответствии со следующим фрагментом, он работает нормально.

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss", Locale.ENGLISH);
String dateInString = "22-01-2015 08:15:55 AM"; 
Date date_1 = formatter.parse(dateInString);

Но когда я ввожу то же время даты, что и на консоли, консоль отображает java .text.ParseException в соответствии со следующим фрагментом.

System.out.println("Enter time in 'dd-MM-yyyy hh:mm:ss a' format");
Scanner sc = new Scanner(System.in);
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss", Locale.ENGLISH);
String dateInString = sc.next();
Date date_1 = formatter.parse(dateInString);

enter image description here

Кто-нибудь знает, как ее решить?

Ответы [ 2 ]

1 голос
/ 12 января 2020

Вместо использования s c .next () используйте nextLine () метод в классе Scanner, потому что next () будет читать только первый пробел вашего ввода . Так что ваш ввод будет принимать 22-01-2015 вместо 22-01-2015 08:15:55 AM.

Используйте метод s c .nextLine (), тогда проблема будет решена.

1 голос
/ 12 января 2020

Вот проблема.

String dateInString = sc.next();

Вызов next() возвращает следующий токен, разделенный пробелами, который является "22-01-2015", а не "22-01-2015 08:15 : 55 утра ".

Парсер говорит ... "Где время? Бзззтт!"

Решение: используйте nextLine(), чтобы прочитать полную строку ввода.


(Подсказка содержится в сообщении об исключении. Она возвращает вам строку, которую вы попросили ее проанализировать ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...