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 WorkdayCalculatorinstance 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intcalculateNonWeekendHolidays(double start, double end, double[] holidays)Calculates how many holidays in a list are workdays, considering an interval of dates.intcalculateWorkdays(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.DatecalculateWorkdays(double start, int workdays, double[] holidays)Calculate the workday past x workdays from a starting date, considering a range of holidays.DatecalculateWorkdays(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 booleanisHoliday(double aDate, double[] holidays)protected booleanisInARange(double start, double end, double aDate)protected booleanisWeekend(double aDate)protected intpastDaysOfWeek(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 byCalendarconstants.- 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:
 trueif date is weekend,falseotherwise.
 
- 
isHoliday
protected boolean isHoliday(double aDate, double[] holidays)- Parameters:
 aDate- a given date.holidays- an array of holidays.- Returns:
 trueif date is a holiday,falseotherwise.
 
- 
isInARange
protected boolean isInARange(double start, double end, double aDate)- Parameters:
 start- start date.end- end date.aDate- a date to be analyzed.- Returns:
 trueif aDate is between start and end dates,falseotherwise.
 
 - 
 
 -