Y-HKL

calendar.class.php

<?php
date_default_timezone_set(\'PRC\');


class Calendar{
    private $year;   //当前的年
    private $month;  //当前的月
    private $day;    //当前的天
    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->day=date("d");
        //获得这个月的天数
        $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->changeDate("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>&nbsp;</td>\';
        }

        //输出这个月的日期
        for($k=1;$k<$this->days;$k++){
            $j++;
            if($k==$this->day)
                echo \'<td class="fontb">\'.$k.\'</td>\';
            else
                echo \'<td>\'.$k.\'</td>\';
            if($j%7==0)
                echo \'</tr><tr>\';
        }

        //后面的空格
        while($j%7!=0){
            echo \'<td>&nbsp;</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=1;
        }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=$year+1;

            if($year > 2038)
                $year=2038;
            $month=12;
        }else{
            $month++;
        }
        return "year={$year}&month={$month}";
    }

    private function changeDate($url=""){
        echo \'<tr>\';
        echo \'<td colspan="7">\';
        echo \'<form>\';
        echo \'<select name="year" onchange="window.location=\\'\'.$url.\'?year=\\'+this.options[selectedIndex].value+\\'&month=\'.$this->month.\'\\'">\';
        for($sy=1970; $sy <= 2038; $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 \'</tr>\';
    }
}
?>

 

calendar.php

<style>
    table{
        border:1px solid #050;
    }

    .fontb{
        color:white;
        background: blue;
    }

    th,td{
        text-align: center;
        width:30px;
        height: 30px;
    }

    form{
        margin: 0px;
        padding: 0px;
    }
    select{
        text-align: center;
    }
</style>
<?php
//包含类文件
include "./calendar.class.php";

//创建类对象
$calendar=new Calendar;

$calendar->out();
?>

 

分类:

技术点:

相关文章:

  • 2021-08-30
  • 2021-10-19
  • 2021-11-05
  • 2021-10-19
  • 2021-11-08
  • 2021-08-16
  • 2021-10-29
  • 2021-11-21
猜你喜欢
  • 2021-11-20
  • 2022-12-23
  • 2021-11-14
  • 2021-10-19
  • 2022-02-07
  • 2021-12-06
  • 2021-09-27
相关资源
相似解决方案