根据开始时间,结束时间,转化成连续的小时,天,周等

function bmCalTimeSection($pdStartTime, $pdEndTime, $psGranularity) {
$tdYear = date('Y', $pdStartTime);
$tdMonth = date('m', $pdStartTime);
$tdDate = date('d', $pdStartTime);
$tdHour = date('H', $pdStartTime);

$tdDay = date('w', $pdStartTime); // 周日开始
if ($tdDay < 0) $tdDay = 6;

$taResult = array();
if ($psGranularity == "Hour") {
$tdNow = mktime($tdHour,0,0, $tdMonth,$tdDate,$tdYear);
while($tdNow <= strtotime("+1 Hour",$pdEndTime)) {
$taResult[] = array('time'=>$tdNow, 'title'=>date('H', $tdNow));
$tdHour++;
$tdNow = mktime($tdHour,0,0, $tdMonth,$tdDate,$tdYear);
}
}
elseif ($psGranularity == "Day") {
$tdNow = mktime(0,0,0, $tdMonth,$tdDate,$tdYear);
while($tdNow <=strtotime("+0 Day",$pdEndTime)) {
$taResult[] = array('time'=>$tdNow, 'title'=>date('Y-m-d', $tdNow));
$tdDate++;
$tdNow = mktime(0,0,0, $tdMonth,$tdDate,$tdYear);
}
}
elseif ($psGranularity == "Week") {
$tdDate -= $tdDay;
$tdNow = mktime($tdHour,0,0, $tdMonth,$tdDate,$tdYear);
while($tdNow <strtotime("+0 Week",$pdEndTime)) {
$taResult[] = array('time'=>$tdNow, 'title'=>date('m-d', $tdNow));
$tdDate += 7;
$tdNow = mktime(0,0,0, $tdMonth,$tdDate,$tdYear);
}
}
elseif ($psGranularity == "Month") {
$tdNow = mktime(0,0,0, $tdMonth,1,$tdYear);
while($tdNow <= strtotime("+0 Month",$pdEndTime)) {
$taResult[] = array('time'=>$tdNow, 'title'=>date('Y-m', $tdNow));
$tdMonth++;
$tdNow = mktime(0,0,0, $tdMonth,1,$tdYear);
}
}
elseif ($psGranularity == "Year") {
$tdNow = mktime(0,0,0, 1,1,$tdYear);
while($tdNow < strtotime("+0 Year",$pdEndTime)) {
$taResult[] = array('time'=>$tdNow, 'title'=>date('Y', $tdNow));
$tdYear++;
$tdNow = mktime(0,0,0, 1,1,$tdYear);
}
}

return $taResult;
}

 

使用方法:

$start=strtotime('2018-05-01');
$end=strtotime('2018-05-08');
$res=bmCalTimeSection($start,$end,'Hour');

日期作为数组的键值

$data=array{

["a_res"]=>
 array(3) {
 [0]=>
 array(3) {
 ["a_num"]=>
 int(10)
 ["a_user_num"]=>
 int(15)
 ["date"]=>
 string(10) "2018-02-09"
 }

}

 

$func_arr=function($params) use ($data){
$one_arr=[];
foreach($data[$params] as $val){
$one_arr[$val['date']]=$val;
}
return $one_arr;
};
$a_data=$func_arr('a_res');//使用
$b_data=$func_arr('b_res');
$c_data=$func_arr('c_res');

//$time为连续的时间,该天有数据则就是之,没有补0
foreach($time as $k=>$v){
$res_array[$k]['time']=$v['title'];
$res_array[$k]['a_user_num']=$a_data[$v['title']]['a_user_num']?$a_data[$v['title']]['a_user_num']:0;
$res_array[$k]['b_user_num']=$b_data[$v['title']]['b_user_num']?$b_data[$v['title']]['b_user_num']:0;
$res_array[$k]['c_user_num']=$c_data[$v['title']]['c_user_num']?$c_data[$v['title']]['c_user_num']:0;
$res_array[$k]['total_user_num']=$a_data[$v['title']]['a_user_num']+$b_data[$v['title']]['b_user_num']+$c_data[$v['title']]['c_user_num'];

}

 

转载于:https://www.cnblogs.com/hupengyin/p/9007307.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值