获取国庆放假加班信息(记录)

 /**
     * 计算节假日当天,放假/加班的情况
     * 下面注释以元旦,春节为例
     * @param day 输入的时期一定时节假日当天且为第一天
     * @return {'2018-01-01':1 , '2018-01-02': 0 } // 1 :放假,0:加班
     */
    public static JSONObject calcHolidays(Date day , Integer type){//type = 1 春节,国庆 ; 2  除夕;3 其他

        Calendar thatcal = Calendar.getInstance();
        thatcal.setTime(day);

        JSONObject result = new JSONObject();
        //春节往前调一天
        if(type == 1 && thatcal.get(Calendar.MONTH) < 6){
            thatcal.add(Calendar.DATE , -1);//春节前调的除夕不添加
        }else{
            result.put(SimpleUtil.dfDay(thatcal.getTime()) , 1);//当天一定放假
        }

        switch(thatcal.get(Calendar.DAY_OF_WEEK)){

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  26      27      28      29      30      31(假)   1(假)         // 25      26      27      28      29      30(班)   31(除夕)
//  2(假)    3       4       5       6       7       8             //    1(假)    2(假)    3(假)    4(假)    5(假)    6(假)    7(班)

            case 1 : //周日

                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, -8);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, 2);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                }

                break;

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  25      26      27      28      29      30(假)   31(假)        // 24      25      26      27      28      29(班)   30(班))
//  1(假)    2       3       4       5       6       7             //    31(除夕)1(假)  2(假)    3(假)    4(假)    5(假)    6(假)

            case 2 : //周一
                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, -8);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                }

                break;

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  24      25      26      27      28      29(班)   30(假)        // 30      31(除夕)1(假)  2(假)    3(假)    4(假)    5(假)  <-  29(班)
//  31(假)   1(假)    2       3       4       5       6             //    6(假)    7       8       9       10      11(班)   12

            case 3: //周二
                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, -8);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, 13);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }
                break;

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  23      24      25      26      27      28(班)   29(班)        // 29      30      31(除夕)1(假)  2(假)    3(假)    4(假)  <-  28(班)
//  30(假)   31(假)   1(假)    2       3       4       5             //    5(假)    6(假)    7       8       9       10(班)   11

            case 4 : //周三
                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, -9);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, 13);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, -1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }
                break;

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  29      30      31      1(假)    2(假)    3(假)    4(班)         // 28      29      30      31(除夕)1(假)  2(假)    3(假)  <-  27(班)
//  5       6       7       8       9       10      11            //    4(假)    5(假)    6(假)    7       8       9(班)    10

            case 5 : //周四
                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, -10);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, 13);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }
                break;

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  28      29      30      31      1(假)    2(假)    3(假)         // 27      28      29      30      31(除夕)1(假)  2(假)  <-  26(班)
//  4       5       6       7       8       9       10            //    3(假)    4(假)    5(假)    6(假)    7       8(班)    9

            case 6 : //周五
                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, -11);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, 13);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                }
                break;

//  周一  周二  周三  周四  周五  周六  周日          //  周一  周二  周三  周四  周五  周六  周日
//  27      28      29      30      31(假)   1(假)    2(假)         // 26      27      28      29      30      31(除夕)1(假)
//  3       4       5       6       7       8       9             //    2(假)    3(假)    4(假)    5(假)    6(假)    7(班)    8(班)

            case 7 : // 周六
                if(type == 1){
                    for(int i = 0 ; i < 6 ; i++){
                        thatcal.add(Calendar.DATE, 1);
                        result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    }
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 0);
                }else if(type == 3) {
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                    thatcal.add(Calendar.DATE, 1);
                    result.put(SimpleUtil.dfDay(thatcal.getTime()), 1);
                }
                break;

        }
        return result;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值