Exclude weekends using Java Calendar
By: Slav Kurochkin
In my current project, I have to grab the latest date add some days(based on the request) and parse it back to the testing framework. The key problem is to exclude weekends while adding a days, so for example, if the date falling on Sunday or Saturday, I should skip it and continue adding days on Monday.
Here is an example:
The starting date is on Thursday, system need add 3 more work days to continue test execution.
When I add 3 days it is falling on Sunday, which is not going provide correct output.
The code bellow will skip Saturday and Sunday and will add work days incrementally (one by one):
public class DateCalculator {
public static void main(String a[]){
String requestedDate; // output
String finalDate; // output2
SimpleDateFormat setDateFormat; // sdf
String month = "10";
String day = "13";
String year = "2016";
int addDays = 3;
setDateFormat = new SimpleDateFormat("MM/dd/yyyy");
Calendar c = Calendar.getInstance();
c.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day));
int workDays = 0;
do {
c.add(Calendar.DAY_OF_MONTH, 1);
if (c.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY
&& c.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)
/* && !holidays.contains((Integer) startCal.get(Calendar.DAY_OF_YEAR))) */
{
++workDays;
}
} while (workDays < addDays);
finalDate = setDateFormat.format(c.getTime());
System.out.println("Here is new solution: " + finalDate);
}
}