用php做个简单的日历
存档:
index.php
1 <html> 2 <head> 3 <title>日历</title> 4 <style> 5 table{border:1px solid #050;} 6 .fontb{color:white;background:blue;} 7 th{width:30px;} 8 td,th{height:30px;text-align:center;} 9 form{margin:0px;padding:0px;} 10 </style> 11 </head> 12 <body> 13 <?php 14 require "calendar.class.php"; 15 echo new Calendar; 16 ?> 17 </body> 18 </html>
calendar.php
1 <?php 2 class Calendar{ 3 private $year; 4 private $month; 5 private $start_weekday; 6 private $days; 7 function __construct(){ 8 $this->year = isset($_GET["year"])?$_GET["year"]:date("Y"); 9 $this->month = isset($_GET["month"])?$_GET["month"]:date("m"); 10 $this->start_weekday = date("w",mktime(0,0,0,$this->month,1,$this->year)); 11 $this->days = date("t",mktime(0,0,0,$this->month,1,$this->year)); 12 } 13 14 function __toString(){ 15 $out .='<table align="center">'; 16 $out .=$this->chageDate(); 17 $out .=$this->weeksList(); 18 $out .=$this->daysList(); 19 $out .='</table>'; 20 return $out; 21 } 22 23 private function weeksList(){ 24 $week = array('日','一','二','三','四','五','六'); 25 $out .= '<tr>'; 26 for($i=0;$i<count($week);$i++){ 27 $out .= '<th class="fontb">'.$week[$i].'</th>'; 28 } 29 $out .= '</tr>'; 30 return $out; 31 } 32 33 private function daysList(){ 34 $out .= '<tr>'; 35 for($j=0;$j<$this->start_weekday;$j++){ 36 $out .= '<td> </td>'; 37 } 38 for($k=1;$k<=$this->days;$k++){ 39 $j++; 40 if($k==date('d')){ 41 $out .= '<td class="fontb">'.$k.'</td>'; 42 } 43 else{ 44 $out .= '<td>'.$k.'</td>'; 45 } 46 if($j%7==0){ 47 $out .= '</tr><tr>'; 48 } 49 } 50 while($j%7!=0){ 51 $out .= '<td> </td>'; 52 $j++; 53 } 54 $out .= '</tr>'; 55 return $out; 56 } 57 58 private function prevYear($year,$month){ 59 $year = $year-1; 60 if($year<1970){ 61 $year=1970; 62 } 63 return "year=($year)&month=($month)"; 64 } 65 66 private function prevMonth($year,$month){ 67 if($month==1){ 68 $year=$year-1; 69 if($year<1970){ 70 $year=1970; 71 } 72 $month=12; 73 } 74 else{ 75 $month--; 76 } 77 return "year=($year)&month=($month)"; 78 } 79 80 private function nextYear($year,$month){ 81 $year=$year+1; 82 if($year>2038){ 83 $year=2038; 84 } 85 return "year=($year)&month=($month)"; 86 } 87 88 private function nextMonth($year,$month){ 89 if($month==12){ 90 $year++; 91 if($year>2038){ 92 $year=2038; 93 } 94 $month=1; 95 } 96 else{ 97 $month++; 98 } 99 return "year=($year)&month=($month)"; 100 } 101 102 private function chageDate($url="index.php"){ 103 $out .= '<tr>'; 104 $out .= '<td><a href="'.$url.'?'.$this->prevYear($this->year,$this->month).'">'.'<<'.'</a></td>'; 105 $out .= '<td><a href="'.$url.'?'.$this->prevMonth($this->year,$this->month).'">'.'<'.'</a></td>'; 106 $out .= '<td colspan="3">'; 107 $out .= '<form>'; 108 $out .= '<select name="year" onchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">'; 109 for($sy=1970;$sy<=2038;$sy++){ 110 $selected=($sy==$this->year)?"selected":""; 111 $out .='<option '.$selected.' value="'.$sy.'">'.$sy.'</option>'; 112 } 113 $out .= '</select>'; 114 $out .= '<select name="month" onchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">'; 115 for($sm=1;$sm<=12;$sm++){ 116 $selected1=($sm==$this->month)?"selected":""; 117 $out .= '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>'; 118 } 119 $out .= '</select>'; 120 $out .= '</form>'; 121 $out .= '</td>'; 122 $out .= '<td><a href="'.$url.'?'.$this->nextYear($this->year,$this->month).'">'.'>>'.'</a></td>'; 123 $out .= '<td><a href="'.$url.'?'.$this->nextMonth($this->year,$this->month).'">'.'>'.'</a></td>'; 124 $out .= '</tr>'; 125 return $out; 126 } 127 } 128 ?>
结果如下:
作 者:Angel_Kitty
出 处:https://www.cnblogs.com/ECJTUACM-873284962/
关于作者:阿里云ACE,目前主要研究方向是Web安全漏洞以及反序列化。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注我的微信公众号IT老实人(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯咖啡以资鼓励,您的肯定将是我最大的动力。thx.
我的公众号是IT老实人(IThonest),一个有故事的公众号,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!
欢迎大家关注我的Github,一些文章的备份和平常做的一些项目会存放在这里。