Package org.apache.poi.ss.formula.atp
Class WorkdayCalculator
- java.lang.Object
-
- org.apache.poi.ss.formula.atp.WorkdayCalculator
-
public class WorkdayCalculator extends Object
A calculator for workdays, considering dates as excel representations.
-
-
Field Summary
Fields Modifier and Type Field Description static WorkdayCalculator
instance
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
calculateNonWeekendHolidays(double start, double end, double[] holidays)
Calculates how many holidays in a list are workdays, considering an interval of dates.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.Date
calculateWorkdays(double start, int workdays, double[] holidays)
Calculate the workday past x workdays from a starting date, considering a range of holidays.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.Set<Integer>
getValidWeekendTypes()
protected boolean
isHoliday(double aDate, double[] holidays)
protected boolean
isInARange(double start, double end, double aDate)
protected boolean
isWeekend(double aDate)
protected int
pastDaysOfWeek(double start, double end, int dayOfWeek)
Calculates how many days of week past between a start and an end date.
-
-
-
Field Detail
-
instance
public static final WorkdayCalculator instance
-
-
Method Detail
-
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 byCalendar
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.
-
-