php日历制作代码分享

前端技术 2023/09/07 PHP

 


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>\';
  }

 }
?>
 

本文地址:https://www.stayed.cn/item/19119

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。