My requirement is to calculate the number of Days between two dates, excluding Saturday and Sunday .
Example:
Start date - 10/09/15 and End date 18/09/15 Result: 7
Date is in DD/MM/YY format.
Code:
import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Scanner; public class DaysCounter { private String startDate; private String endDate; public void calculateDate(){ @SuppressWarnings("resource") Scanner in=new Scanner(new InputStreamReader(System.in)); System.out.println("Enter the starting date (DD/MM/YY) :"); startDate=in.next(); System.out.println("Enter the End date (DD/MM/YY) :"); endDate=in.next(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try { Calendar start = Calendar.getInstance(); start.setTime(sdf.parse(startDate)); Calendar end = Calendar.getInstance(); end.setTime(sdf.parse(endDate)); int workingDays = 0; while(!start.after(end)) { int day = start.get(Calendar.DAY_OF_WEEK); if ((day != Calendar.SATURDAY) && (day != Calendar.SUNDAY)) workingDays++; start.add(Calendar.DATE, 1); } System.out.println(workingDays); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { DaysCounter daysCounter=new DaysCounter(); daysCounter.calculateDate(); } }
Below are the results for the above code.
1 -
Enter the starting date (DD/MM/YY) : 14/09/15 Enter the End date (DD/MM/YY) : 20/09/15 5
2 -
Enter the starting date (DD/MM/YY) : 14/09/15 Enter the End date (DD/MM/YY) : 17/09/15 2
3 -
Enter the starting date (DD/MM/YY) : 31/08/15 Enter the End date (DD/MM/YY) : 30/09/15 21
As you can see from the first example above, the result is correct.
But for the second example, the result is incorrect, the expected result is 4 .
Even the third example, the result is incorrect.
Even when I enter a date between a weekday and a Saturday, I get the wrong result.
Please indicate what changes should be made to the code.
Thanks.
source share