У меня две даты, наем 11/19/2013 и завершение 10/01/2014, оба конвертируются в общее количество часов, не учитывая выходные дни, но у них разные годы, и из-за этого в отчете говорится: общее количество отработанных часов был -1200:Как рассчитать общий час работы между двумя датами?
private int calculateTimeInternship(Vacancy peoplevacancy){
int hourWorked = 0;
Calendar date1 = Calendar.getInstance();
Calendar date2 = Calendar.getInstance();
date1.setTime(peoplevacancy.getDthiring());
date2.setTime(peoplevacancy.getDtendhiring());
int initiation = date1.get(Calendar.DAY_OF_YEAR);
int end = date2.get(Calendar.DAY_OF_YEAR);
int amountDay = (initiation - end) + 1;
for (; initiation <= end; inicio++){
if (date1.get(Calendar.DAY_OF_WEEK) == 1 || date1.get(Calendar.DAY_OF_WEEK) == 7)
amountDay--;
date1.add(Calendar.DATE, 1);
}
hourWorked = amountDay * 4 //4 hour per day;
return hourWorked ;
}
Игнорирование выходных - это то, что делает его сложным. И я бы не поставил этот коэффициент 1/4 в расчет. – Lan
@John 1/4 - это то, что завершает расчет - количество часов работы в день равно 4, поэтому моя математика правильная, не так ли? И я взял «без учета выходных», чтобы означать, что выходные дни считаются нормальными рабочими днями. – Bohemian
Я имею в виду прямое разделение на миллисекунду в день. Держите 4 * снаружи для ясности и, возможно, напишите 86400000L как 86400_000L (я нахожу, что он дает более четкое представление о том, что это миллисекунды в день, а 000 - это видимый знак отсутствия 0). Это по-прежнему правильно и все, но легче сделать ошибку, имея длинную строку 0 и выполнять математические операции самостоятельно. Другая проблема заключается в том, что это не 4 * количество дней, это 4 * число будних дней, которые я считаю. – Lan