PHP得到最近一周和某月\某年的实际天数Date(t)\Date(z)

  •   
  • 4337
  • PHP
  • 39
  • super_dodo
  • 2016/12/08

最近有一个接口的需求需要统计最近一周的相关的数据(如下图),也需要统计日均数据(因为月份是可以随意切换的,所以也就需要得到每个月有多少天的数据)。此处我写了一个简单的方法用于公共调用,当然有更好的方法。

PHP得到最近一周的日期已经得到某个月的实际天数Date

温馨提示 Date('t',$time); //PHP日期函数得到某个月的真实天数

/**
* 用于获取最近一周的日期列表
* 用于计算每个月的天数(本月的话截止到今天2016-12-08)
*/
class DodoDate{
	
	//得到最近7天的日期(由小到大) 2016-12-02 #你可以用循环的
	public function getWeekDate(){
		$data[] = Date('Y-m-d',strtotime("-6 day"));
		$data[] = Date('Y-m-d',strtotime("-5 day"));
		$data[] = Date('Y-m-d',strtotime("-4 day"));
		$data[] = Date('Y-m-d',strtotime("-3 day"));
		$data[] = Date('Y-m-d',strtotime("-2 day"));
		$data[] = Date('Y-m-d',strtotime("-1 day"));		//昨天
		$data[] = Date('Y-m-d');							//今天
		return $data;
	}

	//得到一个月的天数--如果是当前月份的话--天数为今天--截止到今天 (2016-12 2016-02)
	public function getMonthDayCnt($month){
		$now = Date('Y-m');
		if($now == $month){				//当前月份的话
			$cnt = Date('d');			//今天就是最大的一天
		}else{
			$time = strtotime($month);
			$cnt = Date('t',$time);		//某个月的天数
		}
		return intval($cnt) ?? 30;		//如果都没有的话,默认30(你还可以判断一下未来的月份)
	}

	//得到某一年的天数--如果是当前年份的话--天数为今天--截止到今天 (2016)
	public static function getYearDayCnt($year){
		$now = Date('Y');
		if($now == $year){				//当前年份的话
			$cnt = Date('z');			//今天就是最大的一天
		}else{
			$time = strtotime($year.'-12-31');	//每年都有12月31日
			$cnt = Date('z',$time);     //0-365 从0开始
		}
		return intval($cnt + 1) ?? 365;  
	}

}

$dodo = new DodoDate();				//实例化该类

$arr = $dodo->getWeekDate();		//得到一周内的日期
echo '<pre>';
print_r($arr);

//最近一周的日期如下
/*Array(
    [0] => 2016-12-02
    [1] => 2016-12-03
    [2] => 2016-12-04
    [3] => 2016-12-05
    [4] => 2016-12-06
    [5] => 2016-12-07
    [6] => 2016-12-08
)*/

$cnt1 = $dodo->getMonthDayCnt('2016-12');		//8   今天是12月8号
$cnt2 = $dodo->getMonthDayCnt('2016-11');		//30  11月份有30天
$cnt3 = $dodo->getMonthDayCnt('2016-2');		//29  今年的2月份
$cnt4 = $dodo->getMonthDayCnt('2015-02');		//28  去年的2月份

echo $cnt1.'<hr>';
echo $cnt2.'<hr>';
echo $cnt3.'<hr>';
echo $cnt4.'<hr>';

$year_cnt1 = $dodo->getYearDayCnt('2016');		//344   今天是12月8号 = 343+1
$year_cnt2 = $dodo->getMonthDayCnt('2015');		//365   2015年有365天 = 364+1

echo $year_cnt1.'<hr>';
echo $year_cnt2.'<hr>';

如果你给我的,和你给别人的是一样的,那我就不要了。——三毛