IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php用户选择几月第几个星期几获得具体日期 -> 正文阅读

[PHP知识库]php用户选择几月第几个星期几获得具体日期

/**
 * @param $year_month 需要计算的年月
 * @param $how_many   第几个日期
 * @param $what_week  选择周几
 * @return array|string[]
 */
public function generation($year_month,$how_many,$what_week)
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    /*$year_month = "2021-07";
    $how_many = '3'; //选择第几个  1.第一个····5第五个、6最后一个
    //1周一,2周二,3周三,4周四,5周五,6周六,7周日,8自然日,9工作日,10周末
    $what_week = '9'; //选择周几
    */
    if ($what_week < 7){//周一-周六
        $what_week = $what_week;
        $week_info = $this->get_week($how_many,$what_week,$year_month);
        $data =array(
            'start_time' =>  $week_info,
            'end_time' =>$week_info
        );
        return $data;
    }elseif ($what_week == 7){//周日
        $what_week = 0;
        $week_info = $this->get_week($how_many,$what_week,$year_month);
        $data =array(
            'start_time' =>  $week_info,
            'end_time' =>$week_info
        );
        return $data;
    }elseif ($what_week == 8){//返回当月一号
        if ($how_many <= 5){
            $week_info =  $year_month.'-0'.$how_many;
        }else{
            $week_info = date('Y-m-d', strtotime(date('Y-m-01', strtotime($year_month.'-01')) . ' 1 month -1 day'));
        }
        $data =array(
            'start_time' =>  $week_info,
            'end_time' =>$week_info
        );
        return $data;
    }elseif ($what_week == 9){//工作日计算
        $start_time =  $year_month.'-01'; //當月第一天
        $end_time = date('Y-m-d', strtotime(date('Y-m-01', strtotime($year_month.'-01')) . ' 1 month -1 day'));
        $info = $this->get_work_day($start_time,$end_time);//获取当月所有的工作日
        $workday = $info['workday'];
        if ($how_many <= 5){ //输入的第几周大于实际的周数,默认使用最后一周
            $week_info = $workday[$how_many-1];
        }else{
            $work_num = count($workday);
            $week_info = $workday[$work_num-1];
        }
        $data =array(
            'start_time' =>  $week_info,
            'end_time' =>$week_info
        );
        return $data;

    }elseif ($what_week == 10){ //获取周末
        //周六
        $start_time = $this->get_week($how_many,6,$year_month);
        $start = explode('-',$start_time);
        //周日
        $end_time = $this->get_week($how_many,0,$year_month);
        $end = explode('-',$end_time);
        if ($start[2] >$end[2]){
            $day = $end[2]-1;
            $end_time = $end_time;
            $start_time = $end[0].'-'.$end[1].'-'.$day;
        }
        $data =array(
           'start_time' =>  $start_time,
            'end_time' =>$end_time
        );
        return $data;
    }

}

/**
 * @param $what_week
 * @param $week
 * @param $year_month
 * @return mixed  计算第几个周几的日期
 */
public function get_week($week,$what_week,$year_month){
    if(empty($year_month)){
        $year_month = date("Y-m");
    }
    $maxDay  = date('t', strtotime($year_month."-01"));
    //计算出当前月份所有周几
    $mondays = array();
    for($i=1; $i<=$maxDay; $i++){
        if(date('w', strtotime($year_month."-".$i)) == $what_week){
            $mondays[] = $year_month."-".($i>9?'':'0').$i;
        }
    }
    //获取当月有几个周几
    if ($week >= count($mondays)){ //输入的第几周大于实际的周数,默认使用最后一周
        $week_num =  count($mondays);
        $week_info = $mondays[$week_num-1];
    }else{
        $week_info = $mondays[$week-1];
    }
    return $week_info;
}
/**
 * @param $start_time  月份第一天
 * @param $end_time    月份最后一天
 * @return array|array[] 每个月所有的工作日和周六周日日期
 */
function get_work_day($start_time,$end_time)
{
    $start_time = empty($start_time)?time():strtotime($start_time);
    $end_time = empty($end_time)?time():strtotime($end_time)+86400;//最后一天也算
    if($end_time<=$start_time){
        return array();
    }
    $days = ($end_time - $start_time)/86400;
    $work_day_array = array();//工作日
    $Weekend_day_array = array();//周末
    for ($i=0; $i < $days ; $i++) {
        $timer = $start_time + 86400*$i;
        $num= date("N",$timer);
        if($num == 6 || $num == 7) {
            $Weekend_day_array[] = date('Y-m-d',$timer);
        }else{
            $work_day_array[] = date('Y-m-d',$timer);
        }
    }
    return array(
        'workday'=>$work_day_array,      //所有工作日
        //'weekend'=>$Weekend_day_array //所有周末
    );
}
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 13:54:33  更:2021-07-22 13:55:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 2:36:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码