php获得当月的节假日函数(包含周末,年度节假日)

根据下单日期,获得最早可预约时间(可预约时间可以根据需求调整)

//测试
    public function jisuan_riqi(){
        $create_time = '2020-04-09';//下单时间
        $jiejia_date = ['2019-12-31'=>2,'2020-01-23'=>8,'2020-04-03'=>4,'2020-04-30'=>6,'2020-06-24'=>4,'2020-09-31'=>9];//国家法定假
        $work_date = 3;//下单时间距预约的时间(相当于三个工作日才能约)
        $yuyue_time = $this->yuyue_date($create_time,$jiejia_date,$work_date);
        var_dump($yuyue_time);die;
    }

    //获得当前月的周末集合
    public function dangyue($create_time){
        $strtotime = strtotime($create_time);
        $month = date('m',$strtotime);
        $year = date('Y',$strtotime);
        $days = date("t", mktime(0,0,0, $month, 1, $year));//当年当月的天数
        $startweek = date("w", mktime(0,0,0, $month, 1, $year));
        $nums = $startweek;
        $datea = [];
        for($i=0;$i<$days;$i++){
            $str = ($i+1 > 9)?$i+1:'0'.($i+1);
            if($nums == 6){
                $datea[] = "$year-$month-".$str;
            }elseif($nums == 7){
                $datea[] = "$year-$month-".$str;
                $nums = 0;
            }
            $nums++;
        }
        return $datea;
    }


    /**
    *计算可预约时间函数
    *@param  $create_time 创建时间
    *@param  $jiejia_date 节假日集合
    *@param  $work_date 下单时间距预约的时间(相当于三个工作日才能约)
    **/
    public function yuyue_date($create_time,$jiejia_date,$work_date,$nums=2){
        $time = $create_time;
        for($s=0;$s<$nums;$s++){
            $time = date('Y-m-d',strtotime("{$time}+$s month"));
            $array = $this->dangyue($time);
            foreach($array as $k=>$v){
                $datea[] = $v;
            }
        }
        //筛选国家法定假
        foreach($jiejia_date as $key=>$val){
            for($v=0;$v<$val;$v++){
                $dateb[] =  date('Y-m-d',strtotime("{$key}+1+$v day"));
            }
        }
        $date = array_merge($datea,$dateb);
        $n = 0;       
        do {
            $create_time = date('Y-m-d',strtotime("{$create_time}+1 day"));
            if(!in_array($create_time,$date)){
                $n++;
            }
        } while ($work_date != $n);
        return $create_time;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要判断当月日期是否为节假日,可以使用中国的法定节假日时间表,根据日期判断是否在节假日范围内。以下是JAVA判断当月日期是否为节假日的代码示例: ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Holiday { /** * 判断当月日期是否为节假日 * @param date 当前日期 * @return 是否为节假日 */ public static boolean isHoliday(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH); // 元旦节 if (month == 1 && day == 1) { return true; } // 春节 if (month == 2 && (day == 4 || day == 5 || day == 6 || day == 7 || day == 8 || day == 9 || day == 10)) { return true; } // 清明节 if (month == 4 && (day == 5 || day == 6 || day == 7)) { return true; } // 劳动节 if (month == 5 && (day == 1 || day == 2 || day == 3)) { return true; } // 端午节 if (month == 6 && (day == 12 || day == 13 || day == 14)) { return true; } // 中秋节 if (month == 9 && (day == 19 || day == 20 || day == 21)) { return true; } // 国庆节 if (month == 10 && (day == 1 || day == 2 || day == 3 || day == 4 || day == 5 || day == 6 || day == 7)) { return true; } return false; } public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); boolean isHoliday = isHoliday(date); System.out.println(sdf.format(date) + " 是否为节假日:" + isHoliday); } } ``` 在这个代码中,我们定义了一个 `isHoliday` 方法,用于判断当月日期是否为节假日。在 `main` 方法中,我们获取当前日期,并判断是否为节假日。如果是节假日,则返回 `true`,否则返回 `false`。在代码中,我们使用了 `java.util.Calendar` 类来获取年月日等信息,使用了 `java.text.SimpleDateFormat` 类来格式化日期。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值