这个问题在这里已经有答案了:
计算两个日期之间的工作日数(3个答案)
23天前关门了。
我的问题是,我需要获得用户将输入的两个日期之间的工作日。我不知道用什么来比较和得到天数,但这是我的代码。
// Scanner
Scanner input = new Scanner(System.in);
System.out.println("First date: ");
String date1 = input.nextLine();
System.out.println("Second date: ");
String date2 = input.nextLine();
input.close();
// The format for the Date
DateFormat formatDate = new SimpleDateFormat("dd/MM/yyyy");
// Conver String to Date
Date date_1 = formatDate.parse(date1);
Date date_2 = formatDate.parse(date2);
// Calendar
Calendar calendar = Calendar.getInstance();
// Date to Calendar
calendar.setTime(date_1);
calendar.setTime(date_2);
现在我需要做些什么来在这两个日期之间安排工作日,我不知道怎么做
2条答案
按热度按时间y1aodyip1#
您可以将输入日期解析为
LocalDate
然后创建一个从开始日期到结束日期的循环,步骤为一天。在循环中,将不落在太阳或周六的日期添加到列表中。示例运行:
注意,api的日期时间
java.util
以及它们的格式化api,SimpleDateFormat
过时且容易出错。建议完全停止使用它们,并切换到现代日期时间api。在trail:date-time了解有关现代日期时间api的更多信息。注意:无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用threeten backport,它将大部分java.time功能向后移植到Java6和Java7。
如果您正在为一个android项目工作,并且您的android api级别仍然不符合java-8,请检查通过desugaring提供的java8+api以及如何在android项目中使用threetenabp。
bprjcwpo2#
你最好使用
java.time
包裹。它们的设计比Date
,Calendar
以及SimpleDateFormat
. 下面是这些课程的问题。您可以在两个给定日期之间的所有日期上创建流,然后过滤(保留)工作日。
请注意
datesUntil
方法从java开始就可用≥ 9如果您碰巧仍然使用Java8,则必须采取一些额外的步骤来代替startDate.datesUntil(endDate)
:计算这两个日期之间的天数,然后生成限制该天数的流。