// 获取下个月是几月
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;
}