您可以使用以下代码来判断一个字符串表示的时间是否在 5、10、15、20 个工作日内:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {
    public static void main(String[] args) throws Exception {
        String startTimeStr = '2022-01-01 09:00:00';
        String endTimeStr = '2022-01-15 18:00:00';

        SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss');
        Date startTime = sdf.parse(startTimeStr);
        Date endTime = sdf.parse(endTimeStr);

        int workingDays = calculateWorkingDays(startTime, endTime);
        System.out.println('工作日数:' + workingDays);

        // 判断是否在5、10、15、20个工作日内
        int[] targetDays = {5, 10, 15, 20};
        for (int targetDay : targetDays) {
            if (workingDays <= targetDay) {
                System.out.println('时间在' + targetDay + '个工作日内');
            } else {
                System.out.println('时间不在' + targetDay + '个工作日内');
            }
        }
    }

    private static int calculateWorkingDays(Date startTime, Date endTime) {
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(startTime);
        int startDayOfWeek = startCalendar.get(Calendar.DAY_OF_WEEK);
        int startOffset = startDayOfWeek == Calendar.SUNDAY ? 1 : 0; // 如果开始日期是周日,需要加1天

        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endTime);
        int endDayOfWeek = endCalendar.get(Calendar.DAY_OF_WEEK);
        int endOffset = endDayOfWeek == Calendar.SATURDAY ? 1 : 0; // 如果结束日期是周六,需要加1天

        int days = (int) ((endTime.getTime() - startTime.getTime()) / (1000 * 60 * 60 * 24));
        int weeks = days / 7;
        int workingDays = days - weeks * 2 + startOffset - endOffset;
        return workingDays;
    }
}

上述代码中,首先将字符串表示的开始时间和结束时间解析为Date类型,然后使用calculateWorkingDays方法计算两个时间之间的工作日数。最后,根据工作日数判断是否在5、10、15、20个工作日内。

Java 计算两个时间之间工作日数并判断是否在指定工作日内

原文地址: https://www.cveoy.top/t/topic/mLNh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录