如何用PHP制作日历

如何用PHP制作日历,第1张

calendar.class.php

 代码如下:

 <?php

class Calendar {

  private $year //当前的年

  private $month //当前的月

  private $start_weekday //当月的第一天对应的是周几

  private $days //当前月一共多少天

 

  function __construct(){

   $this->year=isset($_GET["year"]) ? $_GET["year"] : date("Y")

   $this->month=isset($_GET["month"]) ? $_GET["month"] : date("m")

 

   $this->start_weekday=date("w", mktime(0, 0, 0, $this->month, 1, $this->year))

   $this->days=date("t", mktime(0, 0, 0, $this->month, 1, $this->year))

  }

 

  function out(){

   echo '<table align="center">'

   $this->chageDate("test.php")

   $this->weeksList()

   $this->daysList()

   echo '</table>'

  }

 

  private function weeksList(){

   $week=array('日','一','二','三','四','五','六')

 

   echo '<tr>'

   for($i=0 $i<count($week) $i++)

    echo '<th class="fontb">'.$week[$i].'</th>'

 

   echo '</tr>'

  }

 

  private function daysList(){

   echo '<tr>'

   //输出空格(当前一月第一天前面要空出来)

   for($j=0 $j<$this->start_weekday $j++)

    echo '<td> </td>'

 

 

   for($k=1 $k<=$this->days $k++){

    $j++

    if($k==date('d'))

     echo '<td class="fontb">'.$k.'</td>'

    else

     echo '<td>'.$k.'</td>'

 

    if($j%7==0)

     echo '</tr><tr>'

 

   }

 

   //后面几个空格

   while($j%7!==0){

    echo '<td> </td>'

    $j++

   }

 

   echo '</tr>'

  }

 

  private function prevYear($year, $month){

   $year=$year-1

 

   if($year < 1970)

    $year = 1970

 

   return "year={$year}&month={$month}" 

  }

 

 

  private function prevMonth($year, $month){

   if($month == 1) {

    $year = $year -1

 

    if($year < 1970)

     $year = 1970

 

    $month=12

   }else{

    $month--

   }

 

   return "year={$year}&month={$month}" 

  }

 

 

  private function nextYear($year, $month){

   $year = $year + 1

 

   if($year > 2038)

    $year = 2038

 

   return "year={$year}&month={$month}" 

  }

 

 

  private function nextMonth($year, $month){

   if($month==12){

    $year++

 

    if($year > 2100)

     $year=2100

 

    $month=1

   }else{

    $month++

   }

   

 

   return "year={$year}&month={$month}" 

  }

 

  private function chageDate($url=""){

   echo '<tr>'

   echo '<td><a href="?'.$this->prevYear($this->year, $this->month).'">'.'<<'.'</a></td>'

   echo '<td><a href="?'.$this->prevMonth($this->year, $this->month).'">'.'<'.'</a></td>'

   echo '<td colspan="3">'

   echo '<form>'

   echo '<select name="year" onchange="window.location=''.$url.'?year='+this.options[selectedIndex].value+'&month='.$this->month.''">'

   for($sy=1970 $sy <= 2100 $sy++){

    $selected = ($sy==$this->year) ? "selected" : ""

    echo '<option '.$selected.' value="'.$sy.'">'.$sy.'</option>'

   }

   echo '</select>'

   echo '<select name="month"  onchange="window.location=''.$url.'?year='.$this->year.'&month='+this.options[selectedIndex].value">'

   for($sm=1 $sm<=12 $sm++){

    $selected1 = ($sm==$this->month) ? "selected" : ""

    echo '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>'

   }

   echo '</select>'

   echo '</form>' 

   echo '</td>'

 

 

   echo '<td><a href="?'.$this->nextYear($this->year, $this->month).'">'.'>>'.'</a></td>'

   echo '<td><a href="?'.$this->nextMonth($this->year, $this->month).'">'.'>'.'</a></td>'

   echo '</tr>'

  }

 

 }

?>

 

 

 

 test.php

 

  代码如下:

 <style>

 table {

  border:1px solid #050

 }

 

 .fontb {

  color:white

  background:blue

 }

 

 

 th {

  width:30px

 }

 

 td,th {

  height:30px

  text-align:center

 

 }

 form {

  margin:0px

  padding:0px

 }

</style>

<?php

 include "calendar.class.php"

 

 $calendar=new Calendar

 

 $calendar->out()

?>

进入php源程序目录中的ext目录中,这里存放着各个扩展模块的源代码,选择你需要的模块,比如curl模块:cd curl执行phpize生成编译文件!

phpize在PHP安装目录的bin目录/usr/local/php5/bin/phpize运行时,

可能会报错:Cannot find autoconf. Please check your autoconf installation andthe $PHP_AUTOCONFenvironment variable is set correctly and then rerun thisscript.,需要安装autoconf:yum install autoconf(RedHat或者CentOS)、apt-get installautoconf(Ubuntu Linux)!

执行/usr/local/php5/bin/php -v这个命令时,php会去检查配置文件是否正确,

如果有配置错误,这里会报错,可以根据错误信息去排查!

<?php

//SKY8G提供

function cal_days_in_year($year){

$days=0

for($month=1$month<=12$month++){

$days = $days + cal_days_in_month(CAL_GREGORIAN,$month,$year)

}

return $days

}

//闰年

echo "这是闰年一年有:".cal_days_in_year(2000)."天"

echo "\n"

//平年

echo "这是平年一年有:".cal_days_in_year(1999)."天"

echo "\n"

//2019年

echo "今年2019年有:".cal_days_in_year(date('Y',time()))."天"

echo "\n"

//接下来我们是用php的内置函数cal_days_in_month()

$d=cal_days_in_month(CAL_GREGORIAN,2,2010)

echo "2010 年平年 2 月有 $d 天。\n"

$d=cal_days_in_month(CAL_GREGORIAN,2,2000)

echo "2000 年闰年 2 月有 $d 天。"

echo "\n"

$d=cal_days_in_month(CAL_GREGORIAN,4,2010)

echo "2010 年平年 4 月有 $d 天。\n"

$d=cal_days_in_month(CAL_GREGORIAN,4,2000)

echo "2000 年闰年 4 月有 $d 天。"

echo "\n"

$d=cal_days_in_month(CAL_GREGORIAN,8,2010)

echo "2010 年平年 8 月有 $d 天。\n"

$d=cal_days_in_month(CAL_GREGORIAN,8,2000)

echo "2000 年闰年 8 月有 $d 天。"

//详情如果想了解详情去sky8g网观看,希望对你有帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7084097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存