我的要求是計算天在給定的兩個日期之間的數量,不包括週六和週日。如何計算JAVA中兩個不同日期之間的工作(不包括週末)天數?
實施例:
Start date - 10/09/15 and End date 18/09/15
Result: 7
日期是在DD/MM/YY
格式。
代碼:
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();
}
}
下面是上面的代碼的結果。
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
如在上述第一實施例看到的RESU這是正確的。
但對於第二個示例結果不正確,預期結果是4。
即使是第三個例子,結果也是不正確的。
即使當我輸入星期六和星期六之間的日期時,也會得到不正確的結果。
請注意,應該對代碼進行哪些更改。
謝謝。
http://stackoverflow.com/questions/15622413/calculate-business-days-in-java-without-saturdays-sunday-and-public-holiday或http://stackoverflow.com/questions/4600034/calculate-number-of-weekdays-between-two-dates-in-java ... – XpiritO
@BenWin是的我想要日期差異,但包括開始和結束日期。 –
@ShashiKiran我執行你的程序,它工作正常。第二個例子給出4。 – KDM