I am learning Java and I try to make a program that controls the hours of a working day. The idea is: I ask the user for a start time (HH: mm) (of his work for example) and an end time (HH: mm). I keep that in order to be able to work with it later (I do not know how to ask the user for an hour without doing it as a String, since if I do it as a String, I can sneak anything in. It has to do some API to work with hours, that is, compare, add, subtract, ... I have seen the Date and I do not clarify ...
What I need to check is that the end time minus the start time does not exceed 15 hours, that is, your day should not be longer than those 15 hours. (This I do not know how to do ..). Then I need to take blocks or periods between those hours and operate with the hours, separate, group, ... I'm only interested in working with hours and minutes, I do not need the day, month or year. It's for a day's journey. This is what I have for now: Let's see if someone can give me a cable. :)
public static void main(String[] args) throws IOException {
// TODO code application logic here
try {
Scanner in = new Scanner(System.in); // Creamos un objeto de la clase Scanner
System.out.println("Introduzca la hora de inicio: (hh:mm)");
LocalTime start = LocalTime.parse(in.next());
System.out.println("Introduzca la hora de finalización: (hh:mm)");
LocalTime end = LocalTime.parse(in.next());
int minutes = (int) ChronoUnit.MINUTES.between(start, end);
System.out.println("------------------------------");
if (minutes > (60 * 15)) {//sobrelímite de jornada:
System.out.println("Límte de jornada!");
System.out.println("Sobrepasa las 15 horas!!!");
System.in.read();
} else {//jornada correcta:
System.out.println("Límite de 15 horas en la jornada: OK");
System.out.println("rango de minutos: " + minutes);
//más cosas..
//mostramos horas de trabajo total:
int workhours = minutes / 60;//pasar a horas los minutos trabajados(para mostrarlas)
if (minutes <= 60 && minutes > 0) {
System.out.println("Horas de trabajo: " + workhours + " hora.");
System.out.println("\nPosible trabajo:");
System.out.println("1 hora de conducción.");
System.in.read();
} else {
if (minutes < 0) {
minutes += 60 * 24;
}
System.out.println("Horas de trabajo: " + workhours + " horas.");
//mostramos los periodos:
if (minutes > 45 && minutes <= 315) {//
System.out.println("\nPosible trabajo:");
System.out.println("Salida a las " + start + "h,");
System.out.println("4:30h de conducción,");
System.out.println("1 descanso de 45 min,");
System.out.println("fin de trabajo a las " + end + ".");
System.in.read();
}
if (minutes > 315 && minutes <= 630) {
System.out.println("\nPosible trabajo:");
System.out.println("Salida a las " + start + "h,");
System.out.println("4:30h de conducción,");
System.out.println("1 descanso de 45 min,");
System.out.println("4:30h de conducción,");
System.out.println("1 descanso de 45 min.");
System.in.read();
}
if (minutes > 630 /*&& minutes<=690*/) {
System.out.println("\nPosible trabajo:");
System.out.println("Salida a las " + start + "h,");
System.out.println("4:30h de conducción,");
System.out.println("1 descanso de 45 min,");
System.out.println("4:30h de conducción,");
System.out.println("1 descanso de 45 min,");
System.out.println("60 minutos de conducción.");
System.out.println("Alcanzado el límite de 9h de conducción.");
System.in.read();
}
}
}
} catch (DateTimeParseException e) {
System.out.println("Horas de inicio/fin no válidas!");
System.in.read();
}
}