php 返回某个月的 每周几有几天

本文介绍了一个PHP类,该类可以根据输入的日期或时间戳来计算指定月份内每周的具体天数。通过实例化类并调用相应的方法,可以得到每个月从周一到周日每天出现的次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不得不承认,这真是一个奇葩的需求,无奈写个类凑活用用. 输入日期格式或者 时间戳,返回当月有多少个周一.周二.周三.....周日;

思路就是 找到这个月有多少天,在便利判断. 稍微考虑下闰年的情况

前面的获取一个月有多少天,没事看了下date函数说明,蛋疼的直接有这个参数,今天在这嘲笑一下之前的草包行为.date('t');

 

<?php 
class GAO{
    public function __CONSTRUCT($time='') {
        if(empty($time)) $time=time();
        $time = is_int($time) ? $time : strtotime($time);
        $this->year     =     date('Y',$time );  
        if(date('L',$time)) {
            $this->mouths = array(
                                31=> array(1,3,5,7,8,10,12),
                                30=> array(4,6,9,11),
                                29=> array(2),
                            );
        }else{
            $this->mouths = array(
                                31=> array(1,3,5,7,8,10,12),
                                30=> array(4,6,9,11),
                                28=> array(2),
                            );
        }
        $this->mouth     =     date('m',$time );     
    }
    public function week_num() {
        foreach ($this->mouths as $key => $value) {
            if(in_array($this->mouth, $value)) {
                $n = $key;
                break;
            }
        }
        if(!isset($n) || empty($n)) {
            return '天数获取失败!';
        }
        $result = array(1=>0,0,0,0,0,0,0);
        for ($n; $n >0 ; $n--) { 
            switch (date('N',strtotime($this->year.'-'.$this->mouth.'-'.$n) ) ) {
                case '1':
                    $result[1] += 1; 
                    break;
                case '2':
                    $result[2] += 1; 
                    break;
                case '3':
                    $result[3] += 1; 
                    break;
                case '4':
                    $result[4] += 1; 
                    break;
                case '5':
                    $result[5] += 1; 
                    break;
                case '6':
                    $result[6] += 1; 
                    break;
                case '7':
                    $result[7] += 1; 
                    break;
            }
        }
        return $result;
    }
}

 

转载于:https://www.cnblogs.com/jinshuo/p/8400333.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值