gpt4 book ai didi

java - 如何计算JAVA中两个不同日期之间的工作(不包括周末)天数?

转载 作者:搜寻专家 更新时间:2023-10-31 19:53:55 30 4
gpt4 key购买 nike

我的要求是计算给定的两个日期之间的天数,不包括星期六星期日

示例:

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

如上面第一个示例所示,结果是正确的。

但对于第二个示例,结果不正确,预期结果为 4

即使是第三个例子,结果也不正确。

即使我输入任何工作日和星期六之间的日期也会得到不正确的结果。

请建议,应该对代码进行哪些更改。

谢谢。

最佳答案

您在创建 SimpleDateFormat 时出错,将 yyyy 更改为 yy

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yy");

这应该可以解决您的问题。我看不出您的逻辑有任何问题。

编辑

根据您的意见,如果您的开始日期大于结束日期,那么您必须在 while 循环之前交换它

   if(start.after(end)) {
Calendar tempCal;
tempCal = start;
start = end;
end = tempCal;
}

关于java - 如何计算JAVA中两个不同日期之间的工作(不包括周末)天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32758569/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com