Skip to content

Commit 9672e4b

Browse files
committed
Fixed DateTimeParseException when start or end time is 0
1 parent b95ba4b commit 9672e4b

File tree

1 file changed

+43
-11
lines changed

1 file changed

+43
-11
lines changed

src/org/bytedream/untis4j/Session.java

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -750,21 +750,53 @@ public Timetable getTimetable(LocalDate start, LocalDate end, UntisUtils.Element
750750
}
751751
}
752752

753-
LocalTime startTime;
754-
LocalTime endTime;
755-
756-
try {
757-
startTime = LocalTime.parse(String.valueOf(timetableInfos.getInt("startTime")), DateTimeFormatter.ofPattern("HHmm"));
758-
} catch (DateTimeParseException e) {
759-
startTime = LocalTime.parse(String.valueOf(timetableInfos.getInt("startTime")), DateTimeFormatter.ofPattern("Hmm"));
753+
String startString = String.valueOf(timetableInfos.getInt("startTime"));
754+
String endString = String.valueOf(timetableInfos.getInt("endTime"));
755+
756+
String startPattern;
757+
String endPattern;
758+
759+
switch (startString.length()) {
760+
case 4:
761+
startPattern = "HHmm";
762+
break;
763+
case 3:
764+
startPattern = "Hmm";
765+
break;
766+
case 2:
767+
startString = "00" + startString;
768+
startPattern = "HHmm";
769+
break;
770+
case 1:
771+
startString = "000" + startString;
772+
startPattern = "HHmm";
773+
break;
774+
default:
775+
startPattern = null;
760776
}
761777

762-
try {
763-
endTime = LocalTime.parse(String.valueOf(timetableInfos.getInt("endTime")), DateTimeFormatter.ofPattern("HHmm"));
764-
} catch (DateTimeParseException e) {
765-
endTime = LocalTime.parse(String.valueOf(timetableInfos.getInt("endTime")), DateTimeFormatter.ofPattern("Hmm"));
778+
switch (endString.length()) {
779+
case 4:
780+
endPattern = "HHmm";
781+
break;
782+
case 3:
783+
endPattern = "Hmm";
784+
break;
785+
case 2:
786+
endString = "00" + endString;
787+
endPattern = "HHmm";
788+
break;
789+
case 1:
790+
endString = "000" + endString;
791+
endPattern = "HHmm";
792+
break;
793+
default:
794+
endPattern = null;
766795
}
767796

797+
LocalTime startTime = LocalTime.parse(startString, DateTimeFormatter.ofPattern(startPattern));
798+
LocalTime endTime = LocalTime.parse(endString, DateTimeFormatter.ofPattern(endPattern));
799+
768800
UntisUtils.LessonCode code = UntisUtils.LessonCode.REGULAR;
769801
if (timetableInfos.has("code")) {
770802
code = UntisUtils.LessonCode.valueOf(timetableInfos.getString("code").toUpperCase());

0 commit comments

Comments
 (0)