PHP与时间有关的自定义函数整理

    // 获取下个月是几月
    private function getNextM(){
    	$firstday=date('Y-m-28');
    	$timestamp=strtotime($firstday);
    	$nextM=date('m',$timestamp+3600*24*5+1);
    	return $nextM;
    }
    // 获取上个月是几月
    private function getPrevM(){
    	$firstday=date('Y-m-1');
    	$timestamp=strtotime($firstday);
    	$prevM=date('m',$timestamp-3600*24-1);
    	return $prevM;
    }
	// 获取下月日期
	private function getNextMonthDays($date){
	    $timestamp=strtotime($date);
	    $arr=getdate($timestamp);
	    if($arr['mon'] == 12){
		    $year=$arr['year'] +1;
		    $month=$arr['mon'] -11;
		    $firstday=$year.'-0'.$month.'-01';
		    $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
	    }else{
		    $firstday=date('Y-m-01',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)+1).'-01'));
		    $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
	    }
	    return array($firstday,$lastday);
	}
	// 获取上月日期
	private function getlastMonthDays($date){
	    $timestamp=strtotime($date);
	    $firstday=date('Y-m-1',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)-1).'-01'));
	    $lastday=date('Y-m-d',strtotime("$firstday +1 month -1 day"));
	    return array($firstday,$lastday);
	}
    // 获取这月日期
    private function getMonth($date){
		$firstday = date("Y-m-1",strtotime($date));
		$lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day"));
		return array($firstday,$lastday);
	}
    // 获取上月天数
    private function prevMonthDays($date){
    	$timestamp=strtotime($date);
    	$firstday = date('Y-m-1',strtotime(date('Y',$timestamp).'-'.(date('m',$timestamp)-1).'-01'));
    	$days = date('d',strtotime("$firstday +1 month -1 day"));
    	return $days;
    }
    // 获取某月的天数
    private function nowMonthDays($date){
    	$firstday = date('Y-m-1',strtotime($date));
    	$days = date('d',strtotime("$firstday +1 month -1 day"));
    	return $days;
    }
 	// 获取$date最近$days天的日期数
    private function getDateNum($date,$day){
    	$days = array();
    	for($i=0;$i<$day;$i++){
    		$days[]=date('d',strtotime("$date -$i day"));
    	}
    	return $days;
    }
    // 获取$date最近$day天的下载量
    private function getDayDw($date,$day){
    	$days = $this->getDateNum($date,$day);
    	$field='';
    	for($i=count($days)-1;$i>=0;$i--){
    		$field .= 'day-'.$days[$i].',';
    	}
    	$field = rtrim($field,',');
    	$Dw=D('dwnum_day');
    	$dayDw = $Dw->where('id = 1')->field($field)->find();
    	return $dayDw;
    }
    // 获取月至月初的日期 array 
    private function getMonthTo($date){
		$daynum=date('d',strtotime($date));
    	$days=array();
    	for($i=$daynum-1;$i>=0;$i--){
    		$days[]=date('d',strtotime("$date -$i day"));
    	}
    	return $days;
    }
    // 获取年至年初的月份 array 
    private function getYearTo($date){
    	$m=date('m',strtotime($date));
    	$months=array();
    	for($i=1;$i<=$m;$i++){
    		$months[]=$i;
    	}
    	return $months;
    }
    // 获取今天时数
    private function getHours($date){
    	$H=date('H',strtotime($date));
    	$hours=array();
    	for($i=1;$i<=$H;$i++){
    		$hours[]=$i;
    	}
    	return $hours;
    }
    public function getAbsoAddress(array $imgs){
    	$data=array();
    	for($i=0;$i<count($imgs);$i++){
    		$data[]=APP_ROOT.$imgs[$i];
    	}
    	return $data;
    }
    private function arrToStr($arr){
    	$str='';
    	for($i=0;$i<count($arr);$i++){
    		$str .=$arr[$i].',';
    	}
    	$str=rtrim($str,',');
    	return $str;
    }
    // 获取至年初在线数
    public function getMonthOl(){
    	$Ol=D('online_year');
    	$months = $this->getYearTo(date('Y-m-d H:i:s',time()));
    	$field='';
    	for($i=1;$i<=count($months);$i++){
    		if($i<10){
    			$field .= 'month-0'.$i . ',';
    		}else{
    			$field .= 'month-'.$i . ',';
    		}
    	}
    	$field=rtrim($field,',');
    	$monthOl=$Ol->where("id=1")->field($field)->find();
    	return $monthOl;
    }
    // 获取至月初在线数
    public function getDayOl(){
    	$Ol=D('online_month');
    	$days=$this->getMonthTo(date('Y-m-d H:i:s',time()));
    	$field='';
    	for($i=1;$i<=count($days);$i++){
    		if($i<10){
    			$field .= 'day-0'.$i . ',';
    		}else{
    			$field .= 'day-'.$i . ',';
    		}
    	}
    	$field=rtrim($field,',');
    	$hourOl=$Ol->where("id=1")->field($field)->find();
    	return $hourOl;
    }
    // 获取时在线数
    private function getHourOl(){
    	$Ol=D('online_day');
    	$hours=$this->getHours(date('Y-m-d H:i:s',time()));
    	$field='';
    	for($i=1;$i<=count($hours);$i++){
    		if($i<10){
    			$field .= 'hour-0'.$i . ',';
    		}else{
    			$field .= 'hour-'.$i . ',';
    		}
    	}
    	$field=rtrim($field,',');
    	$hourOl=$Ol->where("id=1")->field($field)->find();
    	return $hourOl;
    }
    // 获取年至年初的下载量
    private function getYearDw(){
    	$months=$this->getYearTo(date('Y-m-d',time()));
    	$field='';
    	for($i=1;$i<=count($months);$i++){
    		if($i<10){
    			$j='0'.$i;
    		}else{
    			$j=$i;
    		}
    		$field .= 'month-'.$j.',';
    	}
    	$field = rtrim($field,',');
    	$Dw=D('dwnum_month');
    	$monDw = $Dw->where('id = 1')->field($field)->find();
    	return $monDw;
    }
    // 获取月下载量
    public function getMonthDw($date){
    	$date=date('Y-m-d',time());
    	$days = $this->getMonthTo($date);
    	$Dw=D('dwnum_day');
    	$field='';
    	for($i=0;$i<count($days);$i++){
    		$field .= 'day-'.$days[$i].',';
    	}
    	$field=rtrim($field,',');
    	$monthDw=$Dw->where('id = 1')->field($field)->find();
    	return $monthDw;
    }
    // 获取$date最近$day天的下载量
    private function getDayDw($date,$day){
    	$days = $this->getDateNum($date,$day);
    	$field='';
    	for($i=count($days)-1;$i>=0;$i--){
    		$field .= 'day-'.$days[$i].',';
    	}
    	$field = rtrim($field,',');
    	$Dw=D('dwnum_day');
    	$dayDw = $Dw->where('id = 1')->field($field)->find();
    	return $dayDw;
    }

 

 

 

 


	if (! function_exists('getRealDay')) {
	/**
	 * [getRealDay 通过年日月判断某月的几号是正确日则用否则选最大]
	 * @param  [type] $y [description]
	 * @param  [type] $m [description]
	 * @param  [type] $d [description]
	 * @return [type]    [description]
	 */
        function getRealDay($y,$m,$d){
            if($y%4==0 && $y%100!=0 || $y%400==0 ){
                $special = 29;
            }else{
                $special = 28;
            }
            if($m<8){
                if($m%2 ==0 && $m != 2){
                    $day = 30;
                }else if($m == 2){
                    $day = $special;
                }else{
                    $day = 31;
                }
            }else{
                if($m%2 ==0){
                    $day = 31;
                }else{
                    $day = 30;
                }
            }
            if($d<=$day){
                $realDay = $d;
            }else{
                $realDay = $day;
            }
        return $realDay;
        }
    }

 

 

 

	/**
	 * [getGradeTime 该时间到几个月后的月底]
	 * @param  [type] $num [月数]
	 * @param  [时间戳] $time [该时间]
	 * @return [type]      [时间戳]
	 */
	public function getGradeTime($num,$time){
		$y = date("Y",$time);
		$m = date("m",$time);
		$total_m = $m + $num;
		if($total_m > 12){
			$real_y = $y+1;
		}else{
			$real_y = $y;
		}
		$real_m = $total_m % 12;
		// ==0  则原地
		if($real_m == 0){
			$real_m = $m;
		}
		$real_d = $this->ifdayEnd($real_y,$real_m);
		$time = strtotime("{$real_y}-{$real_m}-{$real_d} 23:59:59");
		return $time;
	}

 

			$date = strtotime("2018-6-30 23:59:59");
			$month = $this->howMonth($pnum,$date);


	/**
	 * [howMonth 用盒数$num计算重消月数,在某个时间戳前有效]
	 * @return [type] [description]
	 * @return [date] [有效期  时间戳单位]
	 */
	private function howMonth($num,$date){
		if(time()<$date){
			$y = $num/10;
            $y = floor($y);
            $m = $num%10;
            $month=$y*12+$m;
		}else{
			$month = $num;
		}
		return $month;
	}

















 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值