PHP制作日历

Posted 李大宝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP制作日历相关的知识,希望对你有一定的参考价值。

本期本博主将讲述两种利用php制作日历的方法,由于PHP日期函数的便捷性,使得我们制作日历这一过程变得相当简单

问题描述:

1、取到当前日期,并着色显示;
2、根据当前日期,判断本月有多少天,一号是周几;
3、完成本月日历显示

方法一,自动取到当前日期,代码如下

date_default_timezone_set("PRC");
    
    $time = getdate();
    $mday = $time["mday"];
    $mon = $time["mon"];
    $year = $time["year"];
    
    
    if($mon==4||$mon==6||$mon==9||$mon==11){
        $day = 30;
    }elseif($mon==2){
        if(($year%4==0&&$year%100!=0)||$year%400==0){
            $day = 29;
        }else{
            $day = 28;
        }
    }else{
        $day = 31;
    }
    
    $w = getdate(mktime(0,0,0,$mon,1,$year))["wday"];
    
    $date = function($day,$w){
        echo "<table border=\'1\'>";
        echo "<tr><th>星期日</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th></tr>";
        $arr = array();
        for($i=1;$i<=$day;$i++){
            array_push($arr,$i);
        }
        if($w>=1&&$w<=6){
            for($m=1;$m<=$w;$m++){
                array_unshift($arr,"");
            }
        }
        $n=0;
        for($j=1;$j<=count($arr);$j++){
            $n++;
            if($n==1) echo "<tr>";
            global $mday;
            if($mday==$arr[$j-1]){
                echo "<td width=\'80px\' style=\'background-color: greenyellow;\'>".$arr[$j-1]."</td>";
            }else{
                echo "<td width=\'80px\'>".$arr[$j-1]."</td>";
            }
            
            if($n==7){
                echo "</tr>";
                $n=0;
            }
        }
        if($n!=7)echo "</tr>";
        
        echo "</table>";
    };
    $date($day,$w);

运行结果如下

方法二,指定当前日期,代码如下

//此处为时间输入
 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前时间戳为:";    
 echo $today=mktime(9,34,56,06,02,2017);
 
 echo "</br>";
 echo "</br>";
 
 
 $r=date("L",$today);//润平年
 $w=date("N",$today);//星期
 $m=date("n",$today);//月份
 $d=date("j",$today);
if($m==1||$m==3||$m==5||$m==7||$m==8||$m==10||$m==12){
    $days=31;
}elseif($m==4||$m==6||$m==9||$m==11){
    $days=30;
}elseif($m==2){
    if($r==1){
        $days=29;
    }else{
        $days=28;    
    }
}else{
    echo "日期有误!!!";
}
    
$day=1;
$week=0;
$count=($days+$w)/7;

    echo "<table border=\'1\' width=\'500\'>";
        echo <<<th
        <tr style="background-color:#ccc;">
            <th style="color:red;">星期天</th>
            <th>星期一</th>
            <th>星期二</th>
            <th>星期三</th>
            <th>星期四</th>
            <th>星期五</th>
            <th style="color:green;">星期六</th>
        </tr>
th;
    
    for($i=0;$i<=$count;$i++){
        echo "<tr>";
        for($j=0;$j<7;$j++){
            if(($week<$w)||($day>$days)){
                echo "<td></td>";
                $week++;
            }else{
                if($day==$d){
                echo "<td bgcolor=\'green\';>{$day}</td>";
                $day++;    
                }else{
                echo "<td>{$day}</td>";
                $day++;
                }
            }
            
        }
        if($day>$days){
            break;
        }
        echo "</tr>";
    }
    echo "</table>";

echo "</br>";


echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当前时间为:";
echo date("Y-m-d H:i:s 星期N a",$today);

运行结果如下图

效果完美,而后在前两者的基础上稍加改进就可以得到万年历,PHP功能就是如此强大

代码实现感谢@浩神@Q的前端世界两位大神

未经允许不得转发!!!

 

以上是关于PHP制作日历的主要内容,如果未能解决你的问题,请参考以下文章

php 活动日历:在新窗口中打开活动链接。 - 与“制作事件标题链接到事件Websi”结合使用

创建自动更新的日历事件列表

用于 WordPress 的 PHP 片段,用于获取所有产品子类别

Fullcalendar不显示数据库中的事件

原生Js_制作简易日历

如何在EXCEL单元格中制作可以选择的下拉日历并自动填充