Java实现根据输入的日期以及天数,获取此日期之后的天数的工作日

本文介绍了一个Java程序示例,该程序演示了如何在遇到节假日时跳过这些日期,实现工作日的连续递增。通过使用日期操作和一个预定义的节假日列表,程序能够确保日期递增符合工作日的连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static void main(String[] args) {

        List<String> list = new ArrayList<String>();//节假日列表,正式环境中根据日期条件从数据库中获取
        list.add("2017-06-24");
        list.add("2017-06-25");
        list.add("2017-07-01");
        list.add("2017-07-02");
        list.add("2017-07-08");
        list.add("2017-07-09");

        Date curDate = getDate("2017-06-23");
        int days = 3;

        for (int i = 1; i <= days;) {
            curDate = addDays(curDate);
            
            if(!list.contains(new SimpleDateFormat("yyyy-MM-dd").format(curDate))){
                i++;
            }
        }
        
        
        System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(curDate));
    }

    public static Date addDays(Date date) {
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, 1);
        
        return calendar.getTime();
    }

    public static Date getDate(String str) {
        try {
            return new SimpleDateFormat("yyyy-MM-dd").parse(str);
        } catch (ParseException ex) {
            Logger.getLogger(T05.class.getName()).log(Level.SEVERE, null, ex);
        }

        return null;
    }

 

Java中,如果你想要计算两个日期之间的工作日天数,通常需要使用`java.time`包下的`ChronoUnit`和`Days`类。首先,你需要将日期转换为`LocalDate`对象,然后通过`java.time.temporal.TemporalAdjusters`中的`businessDays()`方法去除周末和法定假日。 以下是一个简单的示例: ```java import java.time.LocalDate; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; public class WorkDayCalculator { public static int getWorkingDays(LocalDate startDate, LocalDate endDate) { // 添加一天以包含结束日期当天 endDate = endDate.plusDays(1); List<LocalDate> businessDays = new ArrayList<>(); LocalDate currentDate = startDate; while (!currentDate.isAfter(endDate)) { if (isWorkDay(currentDate)) { // 检查当前日期是否为工作日 businessDays.add(currentDate); } currentDate = currentDate.plusDays(1); } return businessDays.size(); } private static boolean isWorkDay(LocalDate date) { // 这里你可以添加一个假期列表或者使用第三方库来检查特定节假日 // 如果没有特定需求,可以简化为判断非周六、周日即可 return !date.getDayOfWeek().equals(DayOfWeek.SATURDAY) && !date.getDayOfWeek().equals(DayOfWeek.SUNDAY); } public static void main(String[] args) { LocalDate start = LocalDate.of(2023, 1, 1); // 示例开始日期 LocalDate end = LocalDate.of(2023, 1, 15); // 示例结束日期 System.out.println("工作日天数: " + getWorkingDays(start, end)); } } ``` 这个例子中,`getWorkDays()`函数会返回从`startDate`到`endDate`之间的工作日天数。如果你想精确处理假期,可能需要扩展`isWorkDay()`方法来考虑具体的假期规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值