php中获得中国式的周的日期方式

php中有的时候想获取某周的开始和结束日期,不是很方便,于是自己收拾了一套。

    /**
     * 日期转换成中国式的周一和周日,num=-1默认返回本周周一和周日的日期
     * 0表示上周 1表示上上周
     * -2表示下周 -3表示下下周
     * 以此类推
     */
    public static function dealDate($num = -1)
    {
        $date = date('Y-m-d');  //当前日期
        $first = 1; //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
        $w = date('w', strtotime($date));  //获取当前周的第几天 周日是 0 周一到周六是 1 - 6

        //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
        $now_start = date('Y-m-d', strtotime("$date -".($w ? $w - $first : 6).' days')); 
        $now_end = date('Y-m-d', strtotime("$now_start + 6 days"));
        if ($num == -1)
        {
            return ['start' => $now_start, 'end' => $now_end];
        }

        $start_num = $end_num = $deal_num = 0;
        //下周、下下周以此类推
        if ($num < 0)
        {
            $deal_num = (abs($num) - 1) * 7;
            $next_start = date('Y-m-d', strtotime("$now_start + $deal_num days"));
            $next_end = date('Y-m-d', strtotime("$now_end + $deal_num days"));
            return ['start' => $next_start, 'end' => $next_end];
        }

        //上周、上上周,以此类推
        $start_num = 7 + $num * 7;
        $end_num = 1 + $num * 7;

         //上周开始日期 7=7 + 0*7, 上上周14=7 + 1*7
        $start = date('Y-m-d', strtotime("$now_start - $start_num days")); 
         //上周结束日期 1=1 + 0*7, 上上周8=1 + 1 * 7
        $end = date('Y-m-d', strtotime("$now_start - $end_num days")); 
        return ['start' => $start, 'end' => $end];
    }
本月的第一天:    $s_time = date('Y-m-01');
本月的最后一天:  $e_time = date('Y-m-d', strtotime("$s_time +1 month -1 day")); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值