1. <?php  
  2. /**  
  3.  * 日历  
  4.  *  
  5.  * Copyright(c) 2007 by 陈毅鑫(深空). All rights reserved  
  6.  * To contact the author write to {@link mailto:shenkong@php.net}  
  7.  * @author 陈毅鑫(深空)  
  8.  */ 
  9. if (function_exists('date_default_timezone_set')) {  
  10.     date_default_timezone_set('Asia/Chongqing');  
  11. }  
  12. $date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d');  
  13. $date = getdate(strtotime($date));  
  14. $end = getdate(mktime(0, 0, 0, $date['mon'] + 1, 1, $date['year']) - 1);  
  15. $start = getdate(mktime(0, 0, 0, $date['mon'], 1, $date['year']));  
  16. $pre = date('Y-m-d'$start[0] - 1);  
  17. $next = date('Y-m-d'$end[0] + 86400);  
  18. $html = '<table border="1">';  
  19. $html .= '<tr>';  
  20. $html .= '<td><a href="' . $PHP_SELF . '?date=' . $pre . '">-</a></td>';  
  21. $html .= '<td colspan="5">' . $date['year'] . ';' . $date['month'] . '</td>';  
  22. $html .= '<td><a href="' . $PHP_SELF . '?date=' . $next . '">+</a></td>';  
  23. $html .= '</tr>';  
  24. $arr_tpl = array(0 => '', 1 => '', 2 => '', 3 => '', 4 => '', 5 => '', 6 => '');  
  25. $date_arr = array();  
  26. $j = 0;  
  27. for ($i = 0; $i < $end['mday']; $i++) {  
  28.     if (!isset($date_arr[$j])) {  
  29.         $date_arr[$j] = $arr_tpl;  
  30.     }  
  31.     $date_arr[$j][($i+$start['wday'])%7] = $i+1;  
  32.     if ($date_arr[$j][6]) {  
  33.         $j++;  
  34.     }  
  35. }  
  36. foreach ($date_arr as $value) {  
  37.     $html .= '<tr>';  
  38.     foreach ($value as $v) {  
  39.         if ($v) {  
  40.             if ($v == $date['mday']) {  
  41.                 $html .= '<td><b>' . $v . '</b></td>';  
  42.             } else {  
  43.                 $html .= '<td>' . $v . '</td>';  
  44.             }  
  45.         } else {  
  46.             $html .= '<td>&nbsp;</td>';  
  47.         }  
  48.     }  
  49.     $html .= '</tr>';  
  50. }  
  51. $html .= '</table>';  
  52. echo $html;  
  53. ?>