计算java中两个日期之间的时差,同时考虑营业时间,工作暂停和周末

时间:2018-05-03 06:46:46

标签: java validation date datetime logic

我需要在我的程序中获取MinutesRendered特定job。我有特定startdate的{​​{1}}和enddate。我需要计算这两个日期之间的差异,同时跳过假期,周末和每个工作日上午8点至下午5点(周一至周五)。

我发现很难想出一个可以做到这一点的逻辑。是否有任何现有的逻辑或片段(不一定是JAVA)会告诉我这怎么可能?

1 个答案:

答案 0 :(得分:1)

示例程序可以用于您要求的逻辑

public static void main(String[] args){

       LocalDateTime startDate = LocalDateTime.now(), endDate = LocalDateTime.now().plusDays(15);

       //List<String> holidays = Arrays.asList([HOLIDAY_LIST]);
       long days = ChronoUnit.DAYS.between(startDate, endDate);
       int daysCount = 0;
       for(int i=0;i<days;i++) {
           if(!("SATURDAY".equals(startDate.plusDays(i).getDayOfWeek().toString()) || "SUNDAY".equals(startDate.plusDays(i).getDayOfWeek().toString()))) {
               daysCount++;
           }
       }

       long minusMinutes = daysCount * 900;
       System.out.println(ChronoUnit.MINUTES.between(startDate, endDate) - minusMinutes);      

    }

在上面的代码中,[HOLIDAY_LIST]依赖于您,因为您必须在我在评论代码中指定的List中提及。