当前位置:首页 > PHP教程 > php应用 > 列表

php简单的日历程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-28 14:23:48 浏览: 评论:0 

PHP提供了date()函数,该函数提供了丰富的日期处理功能,现在需要获得的数据有两个,第一个是当月的总天数,第二个是该月的第一天所在星期中的第几天,数字表示0(表示星期天)到6(表示星期六).

通过date()函数可以很容易获得上面的数据,代码如下:

  1. <?php 
  2.  
  3. $month = $_GET['m']?$_GET['m']:date(‘n’); 
  4. $year = $_GET['y']?$_GET['y']:date(‘Y’); 
  5.  
  6. $start_week = date(‘w’,mktime(0,0,0,$month,1,$year)); 
  7. $day_num = date(‘t’,mktime(0,0,0,$month,1,$year)); 
  8. $end = false; 
  9. ?> 
  10. <table> 
  11. <tr> 
  12. <td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td> 
  13. </tr> 
  14. <tr> 
  15. <?php 
  16. for($i = 0; $i<$start_week$i++) 
  17. echo “<td></td>”; 
  18.  
  19. $j=1; 
  20.  
  21. while($j<=$day_num
  22. echo “<td>$j</td>”; 
  23. $week = ($start_week+$j-1)%7; 
  24.  
  25. if($week ==6){ 
  26. echo “nt</tr>n”; 
  27. if($j != $day_num
  28. echo “t<tr>ntt”; 
  29. else $end = true; 
  30. $j++; 
  31. while($week%7 != 6) 
  32. echo “<td></td>”; 
  33. $week++; 
  34. if(!$end
  35. echo “n</tr>”; 
  36. ?> 
  37.  
  38. </table> 
  39.  
  40.  
  41. 高级一点类 
  42.  
  43.  代码如下 复制代码  
  44. <?php 
  45. class Calendar 
  46.     private $year
  47.     private $month
  48.     private $weeks  = array('日','一','二','三','四','五','六'); 
  49.      
  50.     function __construct($options = array()) { 
  51.         $this->year = date('Y'); 
  52.         $this->month = date('m'); 
  53.          
  54.         $vars = get_class_vars(get_class($this)); 
  55.         foreach ($options as $key=>$value) { 
  56.             if (array_key_exists($key$vars)) { 
  57.                 $this->$key = $value
  58.             } 
  59.         } 
  60.     } 
  61.      
  62.     function display() 
  63.     { 
  64.         echo '<table class="calendar">'
  65.         $this->showChangeDate(); 
  66.         $this->showWeeks(); 
  67.         $this->showDays($this->year,$this->month); 
  68.         echo '</table>'
  69.     } 
  70.      
  71.     private function showWeeks() 
  72.     { 
  73.         echo '<tr>'
  74.         foreach($this->weeks as $title
  75.         { 
  76.             echo '<th>'.$title.'</th>'
  77.         } 
  78.         echo '</tr>'
  79.     } 
  80.      
  81.     private function showDays($year$month
  82.     { 
  83.         $firstDay = mktime(0, 0, 0, $month, 1, $year); 
  84.         $starDay = date('w'$firstDay); 
  85.         $days = date('t'$firstDay); 
  86.  
  87.         echo '<tr>'
  88.         for ($i=0; $i<$starDay$i++) { 
  89.             echo '<td>&nbsp;</td>'
  90.         } 
  91.          
  92.         for ($j=1; $j<=$days$j++) { 
  93.             $i++; 
  94.             if ($j == date('d')) { 
  95.                 echo '<td class="today">'.$j.'</td>'
  96.             } else { 
  97.                 echo '<td>'.$j.'</td>'
  98.             } 
  99.             if ($i % 7 == 0) { 
  100.                 echo '</tr><tr>'
  101.             } 
  102.         } 
  103.          
  104.         echo '</tr>'
  105.     } 
  106.      
  107.     private function showChangeDate() 
  108.     { 
  109.          
  110.         $url = basename($_SERVER['PHP_SELF']); 
  111.          
  112.         echo '<tr>'
  113.  echo '<td><a href="?'.$this->preYearUrl($this->year,$this->month).'">'.'<<'.'</a></td>'
  114.  echo '<td><a href="?'.$this->preMonthUrl($this->year,$this->month).'">'.'<'.'</a></td>'
  115.         echo '<td colspan="3"><form>'
  116.          
  117.         echo '<select name="year" onchange="window.location=''.$url.'?year='+this.options[selectedIndex].value+'&month='.$this->month.''">'
  118.         for($ye=1970; $ye<=2038; $ye++) { 
  119.             $selected = ($ye == $this->year) ? 'selected' : ''
  120.             echo '<option '.$selected.' value="'.$ye.'">'.$ye.'</option>'
  121.         } 
  122.         echo '</select>'
  123.         echo '<select name="month" onchange="window.location=''.$url.'?year='.$this->year.'&month='+this.options[selectedIndex].value+''">'
  124.         
  125.  
  126.          
  127.         for($mo=1; $mo<=12; $mo++) { 
  128.             $selected = ($mo == $this->month) ? 'selected' : ''
  129.             echo '<option '.$selected.' value="'.$mo.'">'.$mo.'</option>'
  130.         } 
  131.         echo '</select>';         
  132.         echo '</form></td>';         
  133.  echo '<td><a href="?'.$this->nextMonthUrl($this->year,$this->month).'">'.'>'.'</a></td>'
  134.  echo '<td><a href="?'.$this->nextYearUrl($this->year,$this->month).'">'.'>>'.'</a></td>';         
  135.         echo '</tr>'
  136.     } 
  137.      
  138.     private function preYearUrl($year,$month
  139.     { 
  140.         $year = ($this->year <= 1970) ? 1970 : $year - 1 ; 
  141.          
  142.         return 'year='.$year.'&month='.$month
  143.     } 
  144.      
  145.     private function nextYearUrl($year,$month
  146.     { 
  147.         $year = ($year >= 2038)? 2038 : $year + 1; 
  148.          
  149.         return 'year='.$year.'&month='.$month
  150.     } 
  151.      
  152.     private function preMonthUrl($year,$month
  153.     { 
  154.         if ($month == 1) { 
  155.             $month = 12; 
  156.             $year = ($year <= 1970) ? 1970 : $year - 1 ; 
  157.         } else { 
  158.             $month--; 
  159.         }         
  160.          
  161.         return 'year='.$year.'&month='.$month
  162.     } 
  163.      
  164.     private function nextMonthUrl($year,$month
  165.     { 
  166.         if ($month == 12) { 
  167.             $month = 1; 
  168.             $year = ($year >= 2038) ? 2038 : $year + 1; 
  169.         }else
  170.             $month++; 
  171.         } 
  172.         return 'year='.$year.'&month='.$month
  173.     } 
  174.      
  175.  
  176.  
  177. 调用方法 
  178.  
  179.  代码如下 复制代码  
  180. <?php 
  181. $params = array(); 
  182. if (isset($_GET['year']) && isset($_GET['month'])) { 
  183.     $params = array
  184.         'year' => $_GET['year'], 
  185.         'month' => $_GET['month'], 
  186.     ); 
  187. $params['url']  = 'demo.php'
  188. require_once 'calendar.class.php'
  189. ?> 
  190.  
  191. <html> 
  192.     <head> 
  193.         <title>日历demo</title> 
  194.         <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" /> 
  195.         <style type="text/css"
  196.             table.calendar { 
  197.                 border: 1px solid #050; 
  198.             } 
  199.             .calendar th, .calendar td { 
  200.                 width:30px; 
  201.                 text-align:center; 
  202.             }             
  203.             .calendar th { 
  204.                 background-color:#050; 
  205.                 color:#fff; 
  206.             } 
  207.             .today{ 
  208.   color:#fff; 
  209.   background-color:#050;   
  210. //开源代码phpfensi.com               
  211.             } 
  212.         </style> 
  213.     </head> 
  214.     <body> 
  215.         <div style="align:center"
  216.             <?php 
  217.                 $cal = new Calendar($params); 
  218.                 $cal->display(); 
  219.             ?>     
  220.         </div> 
  221.     </body> 
  222. </html> 

Tags: php日历 php日历程序

分享到:

相关文章