truncate (almost) all datetimes to minutes for more precise calculation

This commit is contained in:
2025-07-07 09:02:47 +02:00
parent b472d0dcba
commit f8ed1d185b

View File

@ -77,7 +77,7 @@ public class LoadingBar {
var br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); var br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
System.out.print("Ankunftszeit: "); System.out.print("Ankunftszeit: ");
String startTimeRaw = br.readLine(); String startTimeRaw = br.readLine();
var startTime = LocalTime.parse(startTimeRaw, TIME_FORMATTER); var startTime = LocalTime.parse(startTimeRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
handleMittagspause(br, startTime); handleMittagspause(br, startTime);
handleZapfenstreich(br, startTime); handleZapfenstreich(br, startTime);
} }
@ -95,7 +95,7 @@ public class LoadingBar {
System.out.print("Mittagspause um (optional): "); System.out.print("Mittagspause um (optional): ");
String manualMittagspauseRaw = br.readLine(); String manualMittagspauseRaw = br.readLine();
if (manualMittagspauseRaw != null && !manualMittagspauseRaw.isBlank()) { if (manualMittagspauseRaw != null && !manualMittagspauseRaw.isBlank()) {
var manualMittagspause = LocalTime.parse(manualMittagspauseRaw, TIME_FORMATTER); var manualMittagspause = LocalTime.parse(manualMittagspauseRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
showLoadingBarMittagspause(startTime, manualMittagspause); showLoadingBarMittagspause(startTime, manualMittagspause);
} else { } else {
showLoadingBarMittagspause(startTime); showLoadingBarMittagspause(startTime);
@ -122,7 +122,7 @@ public class LoadingBar {
String manualZapfenstreichRaw = br.readLine(); String manualZapfenstreichRaw = br.readLine();
LocalTime manualZapfenstreich = null; LocalTime manualZapfenstreich = null;
if (manualZapfenstreichRaw != null && !manualZapfenstreichRaw.isBlank()) { if (manualZapfenstreichRaw != null && !manualZapfenstreichRaw.isBlank()) {
manualZapfenstreich = LocalTime.parse(manualZapfenstreichRaw, TIME_FORMATTER); manualZapfenstreich = LocalTime.parse(manualZapfenstreichRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
showLoadingBarZapfenstreich(startTime, mittagspauseDuration, manualZapfenstreich); showLoadingBarZapfenstreich(startTime, mittagspauseDuration, manualZapfenstreich);
return; return;
} }
@ -138,7 +138,7 @@ public class LoadingBar {
} }
verifyMinimumNumberOfArgs(args); verifyMinimumNumberOfArgs(args);
verifyTimeFormat(nextArg, "Erstes Argument"); verifyTimeFormat(nextArg, "Erstes Argument");
var startTime = LocalTime.parse(nextArg, TIME_FORMATTER); var startTime = LocalTime.parse(nextArg, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
nextArg = args[1]; nextArg = args[1];
var section = DaySection.byParam(nextArg); var section = DaySection.byParam(nextArg);
verifyDaySection(section, nextArg); verifyDaySection(section, nextArg);
@ -161,7 +161,7 @@ public class LoadingBar {
return; return;
} }
verifyTimeFormat(nextArg, "Argument nach " + DaySection.MITTAG.getParam()); verifyTimeFormat(nextArg, "Argument nach " + DaySection.MITTAG.getParam());
var manualMittagspause = LocalTime.parse(nextArg, TIME_FORMATTER); var manualMittagspause = LocalTime.parse(nextArg, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
showLoadingBarMittagspause(startTime, manualMittagspause); showLoadingBarMittagspause(startTime, manualMittagspause);
} }
@ -176,7 +176,7 @@ public class LoadingBar {
int endTimeOffset = 0; int endTimeOffset = 0;
Integer lunchDuration = null; Integer lunchDuration = null;
if (TIME_PATTERN.matcher(nextArg).matches()) { if (TIME_PATTERN.matcher(nextArg).matches()) {
maxZapfenstreich = LocalTime.parse(nextArg, TIME_FORMATTER); maxZapfenstreich = LocalTime.parse(nextArg, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
} else if (OFFSET_PATTERN.matcher(nextArg).matches()) { } else if (OFFSET_PATTERN.matcher(nextArg).matches()) {
endTimeOffset = Integer.parseInt(nextArg); endTimeOffset = Integer.parseInt(nextArg);
} else { } else {
@ -200,7 +200,7 @@ public class LoadingBar {
} }
if (maxZapfenstreich == null && !OFFSET_PATTERN.matcher(nextArg).matches()) { if (maxZapfenstreich == null && !OFFSET_PATTERN.matcher(nextArg).matches()) {
verifyTimeFormat(nextArg, "Letztes Argument nach " + DaySection.ZAPFENSTREICH.getParam() + " und Mittagspausendauer"); verifyTimeFormat(nextArg, "Letztes Argument nach " + DaySection.ZAPFENSTREICH.getParam() + " und Mittagspausendauer");
maxZapfenstreich = LocalTime.parse(nextArg, TIME_FORMATTER); maxZapfenstreich = LocalTime.parse(nextArg, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
showLoadingBarZapfenstreich(startTime, lunchDuration, maxZapfenstreich); showLoadingBarZapfenstreich(startTime, lunchDuration, maxZapfenstreich);
return; return;
} }