Class WorkdayCalculator


  • public class WorkdayCalculator
    extends Object
    A calculator for workdays, considering dates as excel representations.
    • Method Detail

      • getValidWeekendTypes

        public Set<Integer> getValidWeekendTypes()
      • calculateWorkdays

        public int calculateWorkdays​(double start,
                                     double end,
                                     double[] holidays)
        Calculate how many workdays are there between a start and an end date, as excel representations, considering a range of holidays.
        Parameters:
        start - start date.
        end - end date.
        holidays - an array of holidays.
        Returns:
        number of workdays between start and end dates, including both dates.
      • calculateWorkdays

        public Date calculateWorkdays​(double start,
                                      int workdays,
                                      double[] holidays)
        Calculate the workday past x workdays from a starting date, considering a range of holidays. Uses Sat/Sun weekend.
        Parameters:
        start - start date.
        workdays - number of workdays to be past from starting date.
        holidays - an array of holidays.
        Returns:
        date past x workdays.
      • calculateWorkdays

        public Date calculateWorkdays​(double start,
                                      int workdays,
                                      int weekendType,
                                      double[] holidays)
        Calculate the workday past x workdays from a starting date, considering a range of holidays.
        Parameters:
        start - start date.
        workdays - number of workdays to be past from starting date.
        weekendType - weekend parameter (see https://support.microsoft.com/en-us/office/workday-intl-function-a378391c-9ba7-4678-8a39-39611a9bf81d)
        holidays - an array of holidays.
        Returns:
        date past x workdays.
      • pastDaysOfWeek

        protected int pastDaysOfWeek​(double start,
                                     double end,
                                     int dayOfWeek)
        Calculates how many days of week past between a start and an end date.
        Parameters:
        start - start date.
        end - end date.
        dayOfWeek - a day of week as represented by Calendar constants.
        Returns:
        how many days of week past in this interval.
      • calculateNonWeekendHolidays

        protected int calculateNonWeekendHolidays​(double start,
                                                  double end,
                                                  double[] holidays)
        Calculates how many holidays in a list are workdays, considering an interval of dates.
        Parameters:
        start - start date.
        end - end date.
        holidays - an array of holidays.
        Returns:
        number of holidays that occur in workdays, between start and end dates.
      • isWeekend

        protected boolean isWeekend​(double aDate)
        Parameters:
        aDate - a given date.
        Returns:
        true if date is weekend, false otherwise.
      • isHoliday

        protected boolean isHoliday​(double aDate,
                                    double[] holidays)
        Parameters:
        aDate - a given date.
        holidays - an array of holidays.
        Returns:
        true if date is a holiday, false otherwise.
      • isInARange

        protected boolean isInARange​(double start,
                                     double end,
                                     double aDate)
        Parameters:
        start - start date.
        end - end date.
        aDate - a date to be analyzed.
        Returns:
        true if aDate is between start and end dates, false otherwise.