Java 计算两个时间之间工作日数并判断是否在指定工作日内
您可以使用以下代码来判断一个字符串表示的时间是否在 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个工作日内。
原文地址: https://www.cveoy.top/t/topic/mLNh 著作权归作者所有。请勿转载和采集!