php 获取最近七天所有日期 本年 本月 本季度等 时间戳方法


if(!function_exists('get_weeks')){
    /**
     * 获取最近七天所有日期
     */
    function get_weeks($time = '', $format='Y-m-d'){
        $time = $time != '' ? $time : time();
        //组合数据
        $date = [];
        for ($i=1; $i<=7; $i++){
            $date[$i] = date($format ,strtotime( '+' . $i-7 .' days', $time));
        }
        return $date;
    }
}

if(!function_exists('get_between_time')){

    /**
     * 获取起始日期中的所有日期
     * @param $start   开始时间   2022-09-22
     * @param $end     结束时间   2022-09-29
     * @return array
     */
    function get_between_time($start, $end)
    {
        $response = [];

        $dt_start = strtotime($start);
        $dt_end   = strtotime($end);
        while ($dt_start <= $dt_end) {
            array_push($response, date('Y-m-d', $dt_start));
            $dt_start = strtotime('+1 day', $dt_start);
        }
        return $response;
    }
}




if (!function_exists('getStartEndtime')) {

    /**
     * 获取起始时间戳
     * @param string $type 类型 1本年 2本季度 3上月 4本月  5本周 6上周 7下周
     * @return string
     */
    function getStartEndtime($type='')
    {
        switch ($type) {
            case 1:
                //本年开始
                $startTime = strtotime(date("Y", time()) . "-1" . "-1");
                //本年结束
                $overTime = strtotime(date("Y", time()) . "-12" . "-31");
                break;
            case 2:
                //获取当前季度
                $season = ceil((date('m')) / 3);
                $startTime = mktime(00, 00, 00, $season * 2 + 1, 1, date('Y'));
                $overTime = mktime(23, 59, 59, $season * 3, date('t', mktime(0, 0, 0, $season * 3, 1, date("Y"))), date('Y'));

                break;
            case 3:
                //上月
                $startTime = mktime(0,0,0,date("m")-1,1,date("Y"));
                $overTime = mktime(0,0,0,date("m"),1,date("Y"))-1;
                break;
            case 4:
                //本月
                $startTime = mktime(0, 0, 0, date('m'), 1, date('Y'));
                $overTime = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
                break;
            case 5:
                //本周
                $startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y'));
                $overTime=mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y'));
                break;
            case 6:
                //上周
                $startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
                $overTime=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));  break;
            case 7:
                //下周
                $startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1+7,date('Y'));
                $overTime=mktime(23,59,59,date('m'),date('d')-date('w')+7+7,date('Y'));
                break;

            default:
                //今天
                $startTime = mktime(0,0,0,date("m"),date("d"),date("Y"));
                $overTime = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
                break;
        }

        return ['statTime'=>$startTime,'endTime'=>$overTime];
    }

}


if (!function_exists('getWeekMyActionAndEnd')) {
    /**
     * Notes:获取某星期的开始时间和结束时间
     * User: guqi
     * Date: 2023/3/13
     * Time: 14:44
     * @param $time   时间
     * @param $first 表示每周星期一为开始日期 0表示每周日为开始日期
     * @param $retType 1日期格式 2时间戳
     * @return string[]
     */
    function getWeekMyActionAndEnd($time = '', $first = 1, $retType = '2')
    {
        //当前日期
        if (!$time) $time = time();
        $sdefaultDate = date("Y-m-d", $time);
        //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
        //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
        $w = date('w', strtotime($sdefaultDate));
        //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
        $week_start = date('Y-m-d', strtotime("$sdefaultDate -" . ($w ? $w - $first : 6) . ' days'));
        //本周结束日期
        $week_end = date('Y-m-d', strtotime("$week_start +6 days"));

        $week_start = $week_start . ' 00:00:00';
        $week_end = $week_end . ' 23:59:59';

        //返回时间戳
        if ($retType == 2) {
            $week_start = strtotime($week_start);
            $week_end = strtotime($week_end);
        }
        return array("week_start" => $week_start, "week_end" => $week_end);
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值