Java compute duration of Project and Tasks doesnt work

77 Views Asked by At

I am trying to compute the duration Of each Project and each Task appointed to the Project, unfortunately it always returns 0. computeDuration:

        Date minDate = projectTasks[0].gettaskFromDate();
        Date maxDate = projectTasks[0].gettaskEndDate();
        for (int i = 0; i < numOfTasks; ++i) {
            if (projectTasks[i] != null && projectTasks[i].gettaskEndDate() != null && projectTasks[i].gettaskFromDate() != null) {
                projectTasks[i].settaskDuration(utils.Globals.computeDuration(projectTasks[i].gettaskFromDate(), projectTasks[i].gettaskEndDate()));
            }
        }
        for (int i = 0; i < numOfTasks; ++i) {
            if (projectTasks[i] != null && projectTasks[i].gettaskEndDate() != null && projectTasks[i].gettaskFromDate() != null) {
                if (utils.Globals.validateDates(projectTasks[i].gettaskFromDate(), minDate)) {
                    minDate = projectTasks[i].gettaskFromDate();
                }
                if (utils.Globals.validateDates(maxDate, projectTasks[i].gettaskEndDate())) {
                    maxDate = projectTasks[i].gettaskEndDate();
                }
            }
        }
        setprojectDuration(utils.Globals.computeDuration(minDate, maxDate));
    }

utils.Globals.validateDates:

public static boolean validateDates(Date from, Date to){
        return from.before(to);
    }

utils.Globals.computeDuration:

 public static int computeDuration(Date from, Date to){
        long diffIn = Math.abs(to.getTime() - from.getTime());
        int duration = (int) TimeUnit.DAYS.convert(diffIn, TimeUnit.MILLISECONDS);
        return duration;
    }

Thanks in advance!

1

There are 1 best solutions below

4
Stone On

You could confirm if the diff between your from and to dates is over one day or not. If all diffs is less than one day, then computeDuration return 0 always.

Please check DAYS diff is expected or not in the blow codes.

 public static int computeDuration(Date from, Date to){
        long diffIn = Math.abs(to.getTime() - from.getTime());
        int duration = (int) TimeUnit.DAYS.convert(diffIn, TimeUnit.MILLISECONDS);
        return duration;
    }