婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > yii 框架實現按天,月,年,自定義時間段統計數據的方法分析

yii 框架實現按天,月,年,自定義時間段統計數據的方法分析

熱門標簽:邢臺400電話辦理 辦理400電話哪家好點 咸陽電銷 嘟嘟云外呼系統 正規電銷機器人系統 濟源百應電銷機器人聯系方式 重慶外呼電銷系統多少錢 南寧電話外呼系統線路 南京3D地圖標注

本文實例講述了yii 框架實現按天,月,年,自定義時間段統計數據的方法。分享給大家供大家參考,具體如下:

天(day): 格式Y-m-d

月(month):格式Y-m

年(year):格式Y

時間段(range): 格式Y-m-d

首先計算時間

天0-23小時

$rangeTime = range(0, 23);

月:1-月底

// $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$days = date("t",strtotime($year . '-' . $month));
// 生成1-days的天
$rangeTime = range(1, $days);

年:1-12月

$rangeTime = range(1, 12);

時間段;開始時間-結束時間

$stimestamp = strtotime($time);
$etimestamp = strtotime($time2);
// 計算日期段內有多少天
$days = ($etimestamp - $stimestamp) / 86400 + 1;
// 保存每天日期
for($i = 0; $i  $days; $i++){
  $newTimeStamp = $stimestamp + (86400 * $i);
  $rangeTime[] = date('Y-m-d', $newTimeStamp);
  $labels[] = date('d', $newTimeStamp) . Yii::t('backend', 'day');
}

封裝一下

/**
   * 獲取label和時間段
   * type: day, month, year, range
   * time: 日期; day為具體的天y-m-d, month為具體的月y-m, year為具體的年y
   * time2 日期, 時間段的第二個時間
   */
  public function getLabelAndRangeTime($type, $time, $time2) {
    if(empty($time)) {
      $time = date('Y-m-d', time());
    }
 
    $labels = [];
    $rangeTime = [];
 
    if($type == 'day') {
      // 生成1-24小時
      $rangeTime = range(0, 23);
      foreach ($rangeTime as $key => $val) {
        $label = $val . Yii::t('backend', 'hour');
        $labels[] = $label;
      }
    } else if($type == 'month') {
      $dateArr = explode('-', $time);
      if(count($dateArr > 1)) {
        $year = $dateArr[0];
        $month = $dateArr[1];
        $time = $year;
        $time2 = $month;
        // 獲取當前年月的天數
        // $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
        $days = date("t",strtotime($year . '-' . $month));
        // 生成1-days的天
        $rangeTime = range(1, $days);
 
        foreach ($rangeTime as $key => $val) {
          $label = $val . Yii::t('backend', 'day');
          $labels[] = $label;
        }
      }
    } else if($type == 'year') {
      // 生成1-12月
      $rangeTime = range(1, 12);
      foreach ($rangeTime as $key => $val) {
        $label = $val . Yii::t('backend', 'month');
        $labels[] = $label;
      }
    } else if($type == 'range') {
      $stimestamp = strtotime($time);
      $etimestamp = strtotime($time2);
      // 計算日期段內有多少天
      $days = ($etimestamp - $stimestamp) / 86400 + 1;
      // 保存每天日期
      for($i = 0; $i  $days; $i++){
        $newTimeStamp = $stimestamp + (86400 * $i);
        $rangeTime[] = date('Y-m-d', $newTimeStamp);
        $labels[] = date('d', $newTimeStamp) . Yii::t('backend', 'day');
      }
    }
 
    
    return [
      'type'   => $type,
      'time'   => $time,
      'time2'   => $time2,
      'rangeTime' => $rangeTime,
      'labels'  => $labels
    ];
  }

然后查詢數據庫

$query = Order::find();
    if($type == 'day') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m-%d %H") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['FROM_UNIXTIME(pay_at,"%Y-%m-%d")' => $time]);
    } else if($type == 'month') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m-%d") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['FROM_UNIXTIME(pay_at,"%Y-%m")' => ($time . '-' . $time2)]);
    } else if ($type == 'year') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['FROM_UNIXTIME(pay_at,"%Y")' => $time]);
    } else if ($type == 'range') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m-%d") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['between', 'FROM_UNIXTIME(pay_at,"%Y-%m-%d")', $time, $time2]);
    }
    $data = $query->andWhere(['pay_status' => 2])->groupBy('char_time')->all();

按時間排列下

$dataArr = [];
foreach ($data as $allKey => $allVal) { 
      $dataArr[$allVal->char_time]['char_time'] = $allVal->char_time;
      $dataArr[$allVal->char_time]['total_order'] = $allVal->total_order;
      $dataArr[$allVal->char_time]['total_order_amount'] = bcdiv($allVal->total_order_amount, 100, 2);
}

再按時間獲取對應數據

foreach ($rangeTime as $key => $val) {
      if($type == 'range') {
        if (array_key_exists($val, $dataArr)) {
          $charCountDatas[] = $dataArr[$val]['total_order'];
          $charAmountDatas[] = $dataArr[$val]['total_order_amount'];
        } else {
          $charCountDatas[] = 0;
          $charAmountDatas[] = 0;
        }
      } else {
        $theNow = strlen($val) == 2 ? $val : '0' . $val;
 
        if($type == 'day') {
          $theTime = $time . ' ' . $theNow;
        } else if($type == 'month') {
          $theTime = $time . '-' . $time2 . '-' . $theNow;
        } else if($type == 'year') {
          $theTime = $time . '-' . $theNow;
        }
 
        if (array_key_exists($theTime, $dataArr)) {
          $charCountDatas[] = $dataArr[$theTime]['total_order'];
          $charAmountDatas[] = $dataArr[$theTime]['total_order_amount'];
        } else {
          $charCountDatas[] = 0;
          $charAmountDatas[] = 0;
        }
      }
    }

封裝下

/**
   * 時間段內支付訂單量及金額
   * type 類型: day, month, year
   * time: 時間, day: 選擇的時間; month: 表示年;year: 表示年; range: 第一個時間
   * time2: 時間: day: ''; month: 表示月;year: ''; range: 第二個時間 
   * rangeTime 時間段 day: 1-24小時; month: 1-30天; year:1-12月,range: time和time2之間的天
   */
  public function getDayOrderPayChar($type, $time, $time2, $rangeTime) {
    $query = Order::find();
    if($type == 'day') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m-%d %H") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['FROM_UNIXTIME(pay_at,"%Y-%m-%d")' => $time]);
    } else if($type == 'month') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m-%d") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['FROM_UNIXTIME(pay_at,"%Y-%m")' => ($time . '-' . $time2)]);
    } else if ($type == 'year') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['FROM_UNIXTIME(pay_at,"%Y")' => $time]);
    } else if ($type == 'range') {
      $query = $query->select(['FROM_UNIXTIME(pay_at,"%Y-%m-%d") as char_time', 'COUNT(id) as total_order', 'SUM(pay_amount) as total_order_amount'])
            ->where(['>=', 'FROM_UNIXTIME(pay_at,"%Y-%m-%d")', $time])
            ->andWhere(['=', 'FROM_UNIXTIME(pay_at,"%Y-%m-%d")', $time2]);
    }
    $data = $query->andWhere(['pay_status' => 2])->groupBy('char_time')->all();
 
 
    $dataArr = [];
    foreach ($data as $allKey => $allVal) { 
      $dataArr[$allVal->char_time]['char_time'] = $allVal->char_time;
      $dataArr[$allVal->char_time]['total_order'] = $allVal->total_order;
      $dataArr[$allVal->char_time]['total_order_amount'] = bcdiv($allVal->total_order_amount, 100, 2);
    }
 
    $charCountDatas = [];
    $charAmountDatas = [];
    foreach ($rangeTime as $key => $val) {
      if($type == 'range') {
        if (array_key_exists($val, $dataArr)) {
          $charCountDatas[] = $dataArr[$val]['total_order'];
          $charAmountDatas[] = $dataArr[$val]['total_order_amount'];
        } else {
          $charCountDatas[] = 0;
          $charAmountDatas[] = 0;
        }
      } else {
        $theNow = strlen($val) == 2 ? $val : '0' . $val;
 
        if($type == 'day') {
          $theTime = $time . ' ' . $theNow;
        } else if($type == 'month') {
          $theTime = $time . '-' . $time2 . '-' . $theNow;
        } else if($type == 'year') {
          $theTime = $time . '-' . $theNow;
        }
 
        if (array_key_exists($theTime, $dataArr)) {
          $charCountDatas[] = $dataArr[$theTime]['total_order'];
          $charAmountDatas[] = $dataArr[$theTime]['total_order_amount'];
        } else {
          $charCountDatas[] = 0;
          $charAmountDatas[] = 0;
        }
      }
    }
 
    $res = [
      'count' => [
        'name' => Yii::t('backend', 'hour_order_pay_count_title'), 
        'color' => '#99CC33', 
        'charData' => $charCountDatas
      ],
      'amount' => [
        'name' => Yii::t('backend', 'hour_order_pay_amount_title'), 
        'color' => '#99CC33', 
        'charData' => $charAmountDatas
      ]
      ];
 
    return $res;
  }

前端

div class="clearfix dashboard-time-select">
  div class="time-select">
    div class="row">
      div class="col-lg-2 col-md-2 col-sm-2">
      ?= Html::dropDownList('day_type', $type, ['day' => Yii::t('backend', 'day'), 'month' => Yii::t('backend', 'month'), 'year' => Yii::t('backend', 'year'), 'range' => Yii::t('backend','range_time')], ['class' => 'type dashboard-time-type']) ?>
      /div> 
      div class="col-lg-7 col-md-7 col-sm-7">
        div class="dashboard-time-box">
          div class="dashboard-time-picker dashboard-time-day ?= ($type == 'day') ? '' : 'hide' ;?>">
            ?= DateTimePicker::widget([
              'name' => 'time',
              'value' => (!empty($time)  $type == 'day') ? $time : '',
              'options' => ['placeholder' => Yii::t('backend', 'date'), 'autocomplete' => 'off', 'class' => 'time'],
              'removeButton' => false,
              'pluginOptions' => [
                'format' => 'yyyy-mm-dd',
                'startView' => 'month',
                'minView' => 'month',
                'maxView' => 'month',
                'autoclose' => true
              ]
            ]) ?>
          /div>
          div class="dashboard-time-picker dashboard-time-month ?= ($type == 'month') ? '' : 'hide' ;?>">
            ?= DateTimePicker::widget([
              'name' => 'time',
              'value' => (!empty($time)  $type == 'month') ? $time : '',
              'options' => ['placeholder' => Yii::t('backend', 'date'), 'autocomplete' => 'off', 'class' => 'time'],
              'removeButton' => false,
              'pluginOptions' => [
                'format' => 'yyyy-mm',
                'startView' => 'year',
                'minView' => 'year',
                'maxView' => 'year',
                'autoclose' => true
              ]
            ]) ?>
          /div>
          div class="dashboard-time-picker dashboard-time-year ?= ($type == 'year') ? '' : 'hide' ;?>">
            ?= DateTimePicker::widget([
              'name' => 'time',
              'value' => (!empty($time)  $type == 'year') ? $time : '',
              'options' => ['placeholder' => Yii::t('backend', 'date'), 'autocomplete' => 'off', 'class' => 'time'],
              'removeButton' => false,
              'pluginOptions' => [
                'format' => 'yyyy',
                'startView' => 'decade',
                'minView' => 'decade',
                'maxView' => 'decade',
                'autoclose' => true
              ]
            ]) ?>
          /div>
          div class="dashboard-time-picker dashboard-time-range ?= ($type == 'range') ? '' : 'hide' ;?>">
            div class="row">
              div class="col-lg-6 col-md-6 col-sm-6 range-start">
                ?= DateTimePicker::widget([
                  'name' => 'time',
                  'value' => (!empty($time)  $type == 'range') ? $time : '',
                  'options' => ['placeholder' => Yii::t('backend', 'date'), 'autocomplete' => 'off', 'class' => 'time time2'],
                  'removeButton' => false,
                  'pluginOptions' => [
                    'format' => 'yyyy-mm-dd',
                    'startView' => 'month',
                    'minView' => 'month',
                    'maxView' => 'month',
                    'autoclose' => true
                  ]
                ]) ?>
              /div>
              div class="col-lg-6 col-md-6 col-sm-6 range-end">
                ?= DateTimePicker::widget([
                  'name' => 'time2',
                  'value' => (!empty($time2)  $type == 'range') ? $time2 : '',
                  'options' => ['placeholder' => Yii::t('backend', 'date'), 'autocomplete' => 'off', 'class' => 'time time2'],
                  'removeButton' => false,
                  'pluginOptions' => [
                    'format' => 'yyyy-mm-dd',
                    'startView' => 'month',
                    'minView' => 'month',
                    'maxView' => 'month',
                    'autoclose' => true
                  ]
                ]) ?>
              /div>
            /div>
          /div>
        /div>
      
      /div> 
      div class="col-lg-2 col-md-2 col-sm-2">
      ?= Html::button(Yii::t('backend', 'sure'), ['class' => 'btn btn-success btn-dashboard-time', 'data-url' => $url]) ?>
      /div> 
    /div>
  /div>
/div>

確認按鈕

$('.dashboard-time-select .btn-dashboard-time').click(function() {
    var url = $(this).attr('data-url');
    var timeSelect = $(this).parent().parent();
    var type = timeSelect.find('.type').val();
    var time = '';
    var time2 = '';
    if(type == 'day') {
      time = timeSelect.find('.dashboard-time-day input').val();
    } else if(type == 'month') {
      time = timeSelect.find('.dashboard-time-month input').val();
    } else if(type == 'year') {
      time = timeSelect.find('.dashboard-time-year input').val();
    } else if(type == 'range') {
      time = timeSelect.find('.dashboard-time-range .range-start input').val();
      time2 = timeSelect.find('.dashboard-time-range .range-end input').val();
    }
    window.location.href = baseBackend + '/' + url + '?type=' + type + 'time=' + time + 'time2=' + time2
  })
  $('.dashboard-time-select .dashboard-time-type').change(function() {
    var type = $(this).val();
    $('.dashboard-time-select .dashboard-time-picker').addClass('hide');
    $('.dashboard-time-select .dashboard-time-' + type).removeClass('hide');
  })

更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優秀開發框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • yii框架結合charjs實現統計30天數據的方法
  • Yii統計不同類型郵箱數量的方法
  • Yii中的relations數據關聯查詢及統計功能用法詳解
  • 解析yii數據庫的增刪查改
  • Yii2 批量插入、更新數據實例
  • Yii2框架數據庫簡單的增刪改查語法小結
  • Yii2.0高級框架數據庫增刪改查的一些操作
  • yii框架表單模型使用及以數組形式提交表單數據示例
  • Yii實現MySQL多數據庫和讀寫分離實例分析
  • Yii+MYSQL鎖表防止并發情況下重復數據的方法
  • Yii實現多數據庫主從讀寫分離的方法
  • yii框架結合charjs統計上一年與當前年數據的方法示例

標簽:河南 平頂山 黃山 通遼 武漢 隴南 唐山 南通

巨人網絡通訊聲明:本文標題《yii 框架實現按天,月,年,自定義時間段統計數據的方法分析》,本文關鍵詞  yii,框架,實現,按天,月,年,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《yii 框架實現按天,月,年,自定義時間段統計數據的方法分析》相關的同類信息!
  • 本頁收集關于yii 框架實現按天,月,年,自定義時間段統計數據的方法分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    大白屁股一区二区视频| 欧美影院一区二区三区| 91啪亚洲精品| 国产精品情趣视频| 成人动漫中文字幕| 中文字幕一区二区三区视频| 99久久国产免费看| 一区二区三区在线观看国产| 欧美影院一区二区三区| 视频一区国产视频| 欧美成人video| 国产一二精品视频| 国产精品久久久久四虎| 91国产免费观看| 日本中文字幕一区二区视频 | 欧美高清视频不卡网| 蜜桃视频在线观看一区二区| 欧美成人r级一区二区三区| 国产在线播放一区二区三区| 国产精品久久国产精麻豆99网站| 91日韩在线专区| 日韩精品一二三四| 国产午夜精品一区二区三区嫩草| 色综合久久中文字幕综合网| 美女爽到高潮91| 亚洲欧洲在线观看av| 欧美日韩精品一区二区三区四区| 久久99精品国产麻豆不卡| 综合激情成人伊人| 日韩一区二区三区av| 成人网在线播放| 日本亚洲欧美天堂免费| 国产精品久久国产精麻豆99网站 | 欧美日韩一区久久| 日本美女一区二区三区| 国产精品毛片无遮挡高清| 777精品伊人久久久久大香线蕉| 成人午夜av在线| 国产又粗又猛又爽又黄91精品| 亚洲永久免费视频| 国产精品成人一区二区艾草| 精品福利av导航| 91精品婷婷国产综合久久性色 | 免费av成人在线| 亚洲在线观看免费视频| 国产精品电影一区二区| 国产欧美日韩在线观看| 欧美成人三级电影在线| 在线观看91精品国产入口| 成人午夜在线播放| 国产乱子伦一区二区三区国色天香| 一区二区欧美国产| 中文字幕二三区不卡| 久久久不卡影院| 精品粉嫩超白一线天av| 日韩欧美二区三区| 免费观看30秒视频久久| 日韩激情在线观看| 精品国产乱子伦一区| 7777精品伊人久久久大香线蕉| 91免费在线播放| 91香蕉视频黄| 91传媒视频在线播放| 97精品国产97久久久久久久久久久久| 国产成人av一区| 国产一区二区在线影院| 丰满少妇在线播放bd日韩电影| 国产一本一道久久香蕉| 成人毛片在线观看| 91视频com| 91黄色免费版| 5月丁香婷婷综合| 欧美大尺度电影在线| 精品久久久久久久一区二区蜜臀| wwwwww.欧美系列| 日本一区二区三区电影| 中文字幕综合网| 亚洲在线视频免费观看| 青娱乐精品在线视频| 国产一区二区0| 91视频在线观看| 欧美人xxxx| 精品久久久久99| 中文字幕国产一区| 亚洲成人在线观看视频| 久久国产精品一区二区| 成人激情视频网站| 欧美午夜精品一区| 久久免费国产精品 | 欧美一区二区播放| 久久综合精品国产一区二区三区| 国产免费成人在线视频| 亚洲一区二区三区美女| 免费欧美在线视频| 不卡的电视剧免费网站有什么| 欧美中文一区二区三区| 久久伊人蜜桃av一区二区| 一区二区三区在线免费观看| 麻豆一区二区在线| 色偷偷久久一区二区三区| 欧美v日韩v国产v| 亚洲色图19p| 麻豆成人av在线| 色网综合在线观看| 2020国产成人综合网| 亚洲欧美日韩国产综合在线| 久久精品国产99久久6| 91农村精品一区二区在线| 日韩免费高清av| 亚洲国产婷婷综合在线精品| 成人激情开心网| 日韩欧美的一区| 香蕉久久一区二区不卡无毒影院| 成人av电影在线观看| 精品福利一区二区三区| 日韩高清一区在线| 在线欧美一区二区| 国产精品伦一区二区三级视频| 久久成人免费网站| 3atv一区二区三区| 亚洲男人的天堂在线aⅴ视频| 国产老肥熟一区二区三区| 日韩亚洲欧美高清| 亚洲福利视频一区二区| 91色在线porny| 一区二区在线观看不卡| 99精品视频一区| 国产精品二区一区二区aⅴ污介绍| 国产精品 欧美精品| 欧美一卡2卡3卡4卡| 亚洲一区在线免费观看| 色婷婷综合久色| 亚洲自拍偷拍麻豆| 欧美日韩国产影片| 亚洲免费观看高清完整版在线观看| 国产91丝袜在线播放| 欧美激情一区二区三区全黄| 成人性生交大片免费看中文| 国产欧美一区二区精品久导航 | 喷水一区二区三区| 免费黄网站欧美| 久久99精品国产麻豆婷婷| 91精品国产综合久久久久久久| 一区二区在线免费观看| 在线一区二区三区| 亚洲大片一区二区三区| 欧美日韩一区高清| 日韩av网站在线观看| 欧美成人在线直播| 韩国视频一区二区| 欧美日韩在线播放一区| 本田岬高潮一区二区三区| 视频一区在线播放| 欧美美女网站色| 国产欧美一区二区三区在线老狼| 日精品一区二区三区| 亚洲福利视频三区| 日韩av电影天堂| 国产福利不卡视频| 欧美在线免费视屏| 欧美日韩免费观看一区二区三区| 欧美影院午夜播放| 国产精品欧美一级免费| 99re66热这里只有精品3直播| 亚洲午夜精品一区二区三区他趣| 欧美放荡的少妇| 国产盗摄精品一区二区三区在线 | 日韩激情视频在线观看| 色呦呦国产精品| 偷拍与自拍一区| 香蕉加勒比综合久久| 欧洲一区在线电影| 日韩中文字幕亚洲一区二区va在线 | 久久99精品国产麻豆婷婷| 久久天天做天天爱综合色| 91丨国产丨九色丨pron| 日韩电影在线一区| 国产女人aaa级久久久级| 国产美女主播视频一区| 91网站在线播放| 一区二区三区不卡视频在线观看| 欧美一区二区三区在线观看视频 | av福利精品导航| 午夜影院久久久| 欧美激情在线一区二区三区| 在线观看视频一区二区欧美日韩| 激情五月婷婷综合网| 亚洲综合色丁香婷婷六月图片| 91麻豆精品国产91久久久久久久久| gogo大胆日本视频一区| 一区二区高清在线| 国产精品午夜免费| 6080国产精品一区二区| 欧美在线色视频| 97久久精品人人澡人人爽| 久久99最新地址| 国产精品网站在线播放| 午夜精品免费在线观看| 日韩电影一二三区| 视频在线在亚洲|