Это происходит из-за того, что SimpleDateFormat
не может проанализировать данную дату в указанном вами формате.
Давайте разберемся - ваш формат Hmm
, и вы указали дату как 747
тогда, конечно, во время синтаксического анализа первая буква 7
даты сопоставляется с первой буквой «H» формата, т.е. часы, а 47
сопоставляется с mm
, то есть минуты, и, следовательно, он может правильно преобразовать но для следующей даты 1637
он не работает, потому что он не знает, какую букву назначить H
.
Вот несколько вариантов, которые вы можете попробовать сделать более универсальным c, выберите формат, например как HHmm
и всегда указывайте дату длиной 4, например, для 747
введите ввод как 0747
, и он должен работать.
Или выберите более понятный формат для отображения парсером например, вы можете выбрать формат как H:mm
и указать входные данные как 7:47
или 16:37
, так как между часами и минутами есть разделитель :
, синтаксический анализатор сможет анализировать все типы времени независимо от o f длина данного входа 3 или 4.