时间推算去除周六日和法定节假日方法(谁有更好的望分享)

import org.omg.Messaging.SyncScopeHelper;

import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @author :Wrry
 * @desc :
 * @date 2021/7/9   14:44
 */
public class scjssj {
    public static void scjssj(String date, int ts) throws ParseException {
        LocalDate dateOfBirth = LocalDate.parse(date);
        int days = 1;
        // 2020  366天
        // 循环  添加接下来一年的时间
        for (int i = 1; i <= ts; ) {
            Period of = Period.of(0, 0, days);
            days++;
            LocalDate DateTime = dateOfBirth.plus(of);

            // 获取周
            String dayOfWeekName = DateTime.getDayOfWeek().toString();
            //System.out.println(dayOfWeekName);
            // 默认0  当为休息日时 1
            int temp = 0;

            List<LocalDate> lists=new ArrayList<>();
            // 记录  工作日
            if (!(dayOfWeekName.equals("SATURDAY") || dayOfWeekName.equals("SUNDAY"))) {
                i++;
                lists.add(DateTime);
                if (i == ts) {
                    System.out.println(DateTime);
                    ceshiteshuriz(DateTime,lists,ts);
                }
            }
        }

    }

    public static void ceshiteshuriz(LocalDate dateTime, List<LocalDate> qcjq,int ts) {
        // DateTime
        List<String> list = Arrays.asList("2021-01-01", "2021-01-02", "2021-01-03",
                "2021-02-12", "2021-02-13", "2021-02-14", "2021-02-15", "2021-02-16",
                "2021-02-17", "2021-04-03", "2021-04-04", "2021-04-05", "2021-05-01",
                "2021-05-02", "2021-05-03", "2021-05-04", "2021-05-05");
        List<LocalDate> listrqgs = new ArrayList<>();
        for (String lits : list){
            //System.out.println("11111111111"+lits);
            LocalDate endOfFeb = LocalDate.parse(lits);
            //System.out.println(endOfFeb);
            listrqgs.add(endOfFeb);
        }


        List<LocalDate> C = new ArrayList<LocalDate>();
        C.addAll(qcjq);
        C.removeAll(listrqgs);
        int ys =ts-(ts- C.size());
        System.out.println(ts+"ts的值");
        System.out.println(C);
        System.out.println(ys+"ys的值");
        zuizhong(dateTime,ys);
    }

    public static void zuizhong(LocalDate dateTime , int ys){
        int days = 1;
        // 2020  366天
        // 循环  添加接下来一年的时间
        for (int i = 0; i < ys; ) {
            Period of = Period.of(0, 0, days);
            days++;
            LocalDate DateTime = dateTime.plus(of);

            // 获取周
            String dayOfWeekName = DateTime.getDayOfWeek().toString();
            //System.out.println(dayOfWeekName);
            // 默认0  当为休息日时 1
            int temp = 0;

            List<LocalDate> lists=new ArrayList<>();
            // 记录  工作日
            if (!(dayOfWeekName.equals("SATURDAY") || dayOfWeekName.equals("SUNDAY"))) {
                i++;
                lists.add(DateTime);
                if (i == ys) {
                    System.out.println("222222222222"+DateTime);
                    //ceshiteshuriz(DateTime,lists,ys);
                }
            }
        }
    }

    public static void main(String[] args) throws ParseException {
        scjssj("2021-01-01",60);
    }


}


/*   // 日期实体类
        Holiday holiday = new Holiday();
        holiday.setRepDate(Date.from(DateTime.atStartOfDay(ZoneOffset.ofHours(8)).toInstant()));
        holiday.setRepYear(Year);
        holiday.setRepMonth(Month);
        holiday.setRepDay(day);
        holiday.setRepWeek((int) (w / 2));

        holiday.setDbStatus(temp);
        holidays.add(holiday);*/

    /* // 获取年份
            int Year = DateTime.getYear();
            // 获取月份
            int Month = DateTime.getMonthValue();
            // 获取日分
            int day = DateTime.getDayOfMonth();*/

    // 当前为第几周
    //int w = 2;

// 设置初始时间
//LocalDate dateOfBirth = LocalDate.of(2021, 1, 1);
//ArrayList<Holiday> holidays = new ArrayList<>();

注:一会会有一个更新版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值