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


    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'];

    }
  • 相关阅读:
    [转]在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)
    Ubuntu操作系统安装使用教程 转载
    ArcInfo和MapInfo的比较 转 http://www.cnblogs.com/njnudt/archive/2007/07/18/821974.html
    jxl导出excel
    flex 图表
    telnet/ssh基本知识
    flex 判断数据类型的几种方法
    友人记
    16进制颜色表
    Ajax不能提交excel
  • 原文地址:https://www.cnblogs.com/hupengyin/p/9007307.html
Copyright © 2020-2023  润新知