Cześć,
Opis zadania: mam do obliczenia ile godzin i minut minęło od daty xyz z godziną xyz do daty abc z godziną abc, mam już zrobioną część ale mam problem z pełnymi godzinami i pierwszymi minutami. Może ktoś pomoże jak rozwiązać ten problem? Może jak lepiej napisać rozwiązanie?
Kod:
public class PauseHours {
LocalDate startWork;
LocalTime startTime;
LocalDate endWork;
LocalTime endTime;
public PauseHours(int startYear, int startMonth, int startDay, int startHour, int startMinutes,
int endYear, int endMonth, int endDay, int endHour, int endMinutes) {
this.startWork = LocalDate.of(startYear,startMonth,startDay);
this.endWork = LocalDate.of(endYear, endMonth, endDay);
this.startTime = LocalTime.of(startHour,startMinutes);
this.endTime = LocalTime.of(endHour, endMinutes);
}
public int allDayOfPause() {
int startYear = startWork.getYear();
int endYear = endWork.getYear();
if (endYear != startYear){
int sum = endWork.lengthOfYear() - endWork.getDayOfYear();
int sumAll = sum + startWork.getDayOfYear();
return sumAll * 24 - 24;
} else {
int sum = startWork.getDayOfYear() - endWork.getDayOfYear();
int toHours = sum * 24;
return toHours - 24;
}
}
public int otherHours() {
int endHours = endTime.MAX.getHour() - endTime.getHour();
int startHours = startTime.getHour() - startTime.MIN.getHour();
int sumHours = endHours + startHours;
return sumHours;
}
public int otherMinutes() {
int averageEndMinutes = endTime.MAX.getMinute() - endTime.getMinute() + 1;
int averageStartMinutes = startTime.getMinute() - startTime.MIN.getMinute() + 1;
int sumMinutes = averageEndMinutes + averageStartMinutes + 1;
if (sumMinutes >= 60) {
int sum = otherHours() + 1;
return 0;
} if(sumMinutes == 0) {
return otherHours() + 1;
} else {
return sumMinutes;
}
}
public String sumOfAllPause() {
int sumOfHours = allDayOfPause() + otherHours();
if (sumOfHours < 45) {
System.out.println("Pauza skrócona !!!");
} else {
System.out.println("Pauza prawidłowa 45h :)");
}
return sumOfHours + "h " + otherMinutes() + "min";
}
@Override
public String toString() {
return "Pauza :" +
"\n Zakończenie= " + endWork + " " + endTime + " " +
"\n Start= " + startWork + " " + startTime +
"\n Godziny pauzy: " + sumOfAllPause() ;
}
}
Wywołanie
PauseHours example = new PauseHours(2019,03,04,04,02,2019,03,01,19,01);
System.out.println(example);
Konsola:
Pauza prawidłowa 45h :)
Pauza :
Zakończenie= 2019-03-01 19:01
Start= 2019-03-04 04:02
Godziny pauzy: 56h 0min