网上有很多JavaScript编写的日历,这种日历读取的是本地的时间,可能会不准确。所以想找一个用php编写的,能读取服务器时间的日历,但是一直都找不到合适的,于是我自己尝试着写了一个,代码如下:
- <?php
- $mnow=(isset($HTTP_GET_VARS['month']) && intval($HTTP_GET_VARS['month'])>0 && intval($HTTP_GET_VARS['month'])<13)?intval($HTTP_GET_VARS['month']):date("m");
- $ynow=(isset($HTTP_GET_VARS['year']) && intval($HTTP_GET_VARS['year'])>1969 && intval($HTTP_GET_VARS['year'])<2038)?intval($HTTP_GET_VARS['year']):date("Y");
- $mtime=mktime(0,0,0,$mnow,date("d"),$ynow);
- $f=date("w",mktime(0,0,0,$mnow,1,$ynow))-1;
- echo "<table id="calendar" border="0" cellpadding="2" cellspacing="1">";
- echo "<tr><td colspan="4" align="center" class="calendartitle"><a href="?".($mnow!=date("m")?"month=".intval($mnow)."&":"")."year=".(intval($ynow)==1970?"1970":intval($ynow)-1).""><</a>".$ynow."<a href="?".($mnow!=date("m")?"month=".intval($mnow)."&":"")."year=".(intval($ynow)==2037?"2037":intval($ynow)+1)."">></a></td><td colspan="3" align="center" class="calendartitle"><a href="?month=".(intval($mnow)==1?"12":intval($mnow)-1).($ynow!=date("Y")?"&year=".intval($ynow):"").""><</a>".date("M",$mtime)."<a href="?month=".(intval($mnow)==12?"1":intval($mnow)+1).($ynow!=date("Y")?"&year=".intval($ynow):"")."">></a></td></tr>";
- echo "<tr><td class="calendartop">S</td><td class="calendartop">M</td><td class="calendartop">T</td><td class="calendartop">W</td><td class="calendartop">T</td><td class="calendartop">F</td><td class="calendartop">S</td></tr>";
- for($i=0;$i<date("t",$mtime)+$f+1;$i++){
- if($i%7==0)echo "<tr>";
- echo "<td".(($i-$f==intval(date("d")) && $mnow==date("m") && $ynow==date("Y"))?" id="calendartoday"":"").(($i%7==0 || $i%7==6)?" class="calendarw"":"").">";
- if($i>$f)echo $i-$f;
- echo "</td>";
- if($i%7==6)echo "</tr>";
- }
- if($i%7<6 && $i%7>0)echo "<td colspan="".(7-$i%7).""></td></tr>";
- if($i%7==6)echo "<td></td></tr>";
- echo "</table>";
- ?>