91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么制作簡單的php日歷

發布時間:2021-08-05 21:15:17 來源:億速云 閱讀:145 作者:chen 欄目:開發技術

本篇內容介紹了“怎么制作簡單的php日歷”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

最近的一個項目中,需要將數據用日歷方式顯示,網上有很多的JS插件,后面為了自己能有更大的控制權,決定自己制作一個日歷顯示。如下圖所示:

怎么制作簡單的php日歷

一、計算數據
1、new一個Calendar類

2、初始化兩個下拉框中的數據,年份與月份

3、初始化要搜索的年份和月份

4、計算得出日歷中每一天的數據信息,包括css、天數

<?php
 require_once 'calendar.php';
 $util = new Calendar();
 $years = array(2012, 2013, 2014, 2015, 2016);//年份選擇自定義
 $months = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);//月份數組
 //獲取post的年份數據
 if(empty($_POST['ddlYear'])) {
  $year = date('Y');
 }else {
  $year = $_POST['ddlYear'];
 }
 //獲取post的月份數據
 if(empty($_POST['ddlMonth'])) {
  $month = date('n');
 }else {
  $month = $_POST['ddlMonth'];
 }

 $calendar = $util->threshold($year, $month);//獲取各個邊界值
 $caculate = $util->caculate($calendar);//計算日歷的天數與樣式
 $draws = $util->draw($caculate);//畫表格,設置table中的tr與td
?>

二、html展示
1、休息天的背景色是不同的,不是當前搜索年月的天數字體顏色也是不同的

2、div中做初始化年份與月份的下拉框的操作,并選中當前要搜索的年月

3、數據已計算好,哪個td屬于哪個tr也已做好,直接將table打印出來即可
  

<div >
  <select name="ddlYear">
  <?php foreach($years as $data) {?>
   <option value="<?php echo $data?>" <?php if($year == $data) echo 'selected="selected"'?>><?php echo $data?></option>
  <?php }?>
  </select>
  <select name="ddlMonth">
  <?php foreach($months as $data) {?>
   <option value="<?php echo $data?>" <?php if($month == $data) echo 'selected="selected"'?>><?php echo $data?></option>
  <?php }?>
  </select>
  <input type="submit" value="修改"/>
 </div>
 <table width="100%" cellspacing="0" class="table_calendar">
  <thead class="f14">
    <tr>
     <td width="16%">日</td>
     <td width="14%">一</td>
     <td width="14%">二</td>
     <td width="14%">三</td>
     <td width="14%">四</td>
     <td width="14%">五</td>
     <td width="14%">六</td>
    </tr>
  </thead>
  <tbody class="f14">
   <?php foreach($draws as $draw) {?>
    <tr>
    <?php foreach($draw as $date) {?>
     <td class="<?php echo $date['tdclass']?>">
      <p class="<?php echo $date['pclass']?>"><?php echo $date['day']?></p>
     </td>
    <?php }?> 
    </tr>
   <?php }?>
  </tbody>
 </table>

三、Calendar類
1、threshold方法,生成日歷的各個邊界值

  1)計算這個月總天數

  2)計算這個月第一天與最后一天,各是星期幾

  3)計算日歷中的第一個日期與最后一個日期
  

/**
  * @deprecated 生成日歷的各個邊界值
  * @param string $year
  * @param string $month
  * @return array
  */
 function threshold($year, $month) {
  $firstDay = mktime(0, 0, 0, $month, 1, $year);
  $lastDay = strtotime('+1 month -1 day', $firstDay);
  //取得天數 
  $days = date("t", $firstDay);
  //取得第一天是星期幾
  $firstDayOfWeek = date("N", $firstDay);
  //獲得最后一天是星期幾
  $lastDayOfWeek = date('N', $lastDay);
  
  //上一個月最后一天
  $lastMonthDate = strtotime('-1 day', $firstDay);
  $lastMonthOfLastDay = date('d', $lastMonthDate);
  //下一個月第一天
  $nextMonthDate = strtotime('+1 day', $lastDay);
  $nextMonthOfFirstDay = strtotime('+1 day', $lastDay);
  
  //日歷的第一個日期
  if($firstDayOfWeek == 7)
   $firstDate = $firstDay;
  else 
   $firstDate = strtotime('-'. $firstDayOfWeek .' day', $firstDay);
  //日歷的最后一個日期
  if($lastDayOfWeek == 6)
   $lastDate = $lastDay;
  elseif($lastDayOfWeek == 7) 
   $lastDate = strtotime('+6 day', $lastDay);
  else
   $lastDate = strtotime('+'.(6-$lastDayOfWeek).' day', $lastDay);
  
  return array(
    'days' => $days, 
    'firstDayOfWeek' => $firstDayOfWeek, 
    'lastDayOfWeek' => $lastDayOfWeek,
    'lastMonthOfLastDay' => $lastMonthOfLastDay,
    'firstDate' => $firstDate,
    'lastDate' => $lastDate,
    'year' => $year,
    'month' => $month
  );
 }

2、caculate方法,計算日歷的天數與樣式

  1)將上個月的天數計算出來,本月第一天的星期不是星期天的話,就需要根據上個月的最后一天計算

  2)將本月的天數遍歷出來,如果是休息天就加上特殊的css樣式

  3)將下個月的天數計算出來,分三種情況,星期日、星期六和工作日
  

/**
  * @author Pwstrick
   * @param array $calendar 通過threshold方法計算后的數據
  * @deprecated 計算日歷的天數與樣式
  */
 function caculate($calendar) {
  $days = $calendar['days'];
  $firstDayOfWeek = $calendar['firstDayOfWeek'];//本月第一天的星期
  $lastDayOfWeek = $calendar['lastDayOfWeek'];//本月最后一天的星期
  $lastMonthOfLastDay = $calendar['lastMonthOfLastDay'];//上個月的最后一天
  $year = $calendar['year'];
  $month = $calendar['month'];
  
  $dates = array();
  if($firstDayOfWeek != 7) {
   $lastDays = array();
   $current = $lastMonthOfLastDay;//上個月的最后一天
   for ($i = 0; $i < $firstDayOfWeek; $i++) {
    array_push($lastDays, $current);//添加上一個月的日期天數
    $current--;
   }
   $lastDays = array_reverse($lastDays);//反序
   foreach ($lastDays as $index => $day) {
    array_push($dates, array('day' => $day, 'tdclass' => ($index ==0 ?'rest':''), 'pclass' => 'outter'));
   }
  }
  
  //本月日歷信息
  for ($i = 1; $i <= $days; $i++) {
   $isRest = $this->_checkIsRest($year, $month, $i);
   //判斷是否是休息天
   array_push($dates, array('day' => $i, 'tdclass' => ($isRest ?'rest':''), 'pclass' => ''));
  }
  
  //下月日歷信息
  if($lastDayOfWeek == 7) {//最后一天是星期日
   $length = 6;
  }
  elseif($lastDayOfWeek == 6) {//最后一天是星期六
   $length = 0;
  }else {
   $length = 6 - $lastDayOfWeek;
  }
  for ($i = 1; $i <= $length; $i++) {
   array_push($dates, array('day' => $i, 'tdclass' => ($i==$length ?'rest':''), 'pclass' => 'outter'));
  }
  
  return $dates;
 }

3、draw方法,畫表格,設置table中的tr與td

  1)數據將要用table標簽來顯示,所以這里要將各個tr下面的td排列好

  2)$index % 7 == 0 計算表格每行的第一列

  3)$index % 7 == 6 || $index == ($length-1) 計算每行的最后一列,或$caculate的最后一個數據

  4)將中間行添加到$tr中,就是每一行的array

 /**
  * @author Pwstrick
  * @param array $caculate 通過caculate方法計算后的數據
  * @deprecated 畫表格,設置table中的tr與td
  */
 function draw($caculate) {
  $tr = array();
  $length = count($caculate);
  $result = array();
  foreach ($caculate as $index => $date) {
   if($index % 7 == 0) {//第一列
    $tr = array($date);
   }elseif($index % 7 == 6 || $index == ($length-1)) {
    array_push($tr, $date);
    array_push($result, $tr);//添加到返回的數據中
    $tr = array();//清空數組列表
   }else {
    array_push($tr, $date);
   }
  }
  return $result;
 }

通過本文大家應該知道日歷制作的方法了,那就趁熱打鐵,做一個屬于自己日歷。

“怎么制作簡單的php日歷”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

台中县| 乐都县| 松桃| 桃江县| 麦盖提县| 五寨县| 射洪县| 屏东县| 昌都县| 皮山县| 九龙县| 博爱县| 介休市| 敦煌市| 宿迁市| 抚宁县| 驻马店市| 邹城市| 阿鲁科尔沁旗| 武隆县| 宜兰市| 商都县| 利川市| 石城县| 甘洛县| 大英县| 香格里拉县| 建昌县| 金湖县| 舒兰市| 固安县| 历史| 大荔县| 辽阳市| 温宿县| 陇南市| 瑞丽市| 镇江市| 陵水| 凤凰县| 信丰县|