• 日历


      

    <?php
    /**
     * php日历代码
     */
    date_default_timezone_set('PRC');
    function calendar(){ 
        if(isset($_GET['ym']) && $_GET['ym']){ 
            $year = substr($_GET['ym'],0,4); 
            $month = substr($_GET['ym'],4,(strlen($_GET['ym'])-4));
    
            if($month>12){ 
                $year += floor($month/12); 
                $month = $month % 12; 
            } 
            if($year > 2030) $year = 2030; 
            if($year < 1980) $year = 1980; 
        }
        
        $year = isset($year) ? $year : date('Y'); 
        $month = isset($month) ? $month : date('n');
    
        if($year==date('Y') && $month==date('n')) $today = date('j');
    
        if($month-1 == 0) 
            $prevmonth = ($year - 1)."12"; 
        else $prevmonth = $year.($month - 1);
    
        if($month+1 == 13) 
            $nextmonth = ($year+1)."1"; 
        else $nextmonth = $year.($month+1);
    
        $prevyear = ($year - 1).$month; 
        $nextyear = ($year + 1).$month;
    echo '<table width="400" border="0" cellpadding="2" cellspacing="2">
      <tr> 
        <td ><a href="?ym='.$prevyear.'"><<</a></td> 
        <td ><a href="?ym='.$prevmonth.'"><</a></td> 
        <td colspan="3" >'.$year.' - '.$month.'</td> 
        <td ><a href="?ym='.$nextmonth.'">></a></td> 
        <td ><a href="?ym='.$nextyear.'">>></a></td> 
      </tr> 
      <tr> 
        <td width="27" >日</td> 
        <td width="27" >一</td> 
        <td width="27" >二</td> 
        <td width="27" >三</td> 
        <td width="27" >四</td> 
        <td width="27" >五</td> 
        <td width="27" >六</td> 
      </tr>';
     
        $nowtime = mktime(0,0,0,$month,1,$year);                    //当月1号转为秒 
        $daysofmonth = date('t',$nowtime);                            //当月天数
        $weekofbeginday = date('w',$nowtime);                        //当月第一天是星期几 
        $weekofendday = date('w',mktime(0,0,0,$month+1,0,$year));    //当月最后一天是星期几 
        $daysofprevmonth = date('t',mktime(0,0,0,$month,0,$year));    //上个月天数
        $count = 1;//计数
        // echo $weekofbeginday;
        //列出上月后几天 
        if($weekofbeginday>0){
            for($i = 1 ; $i <= $weekofbeginday ; $i++){ 
                echo "<td style='background:#ccc'>".($daysofprevmonth-$weekofbeginday+$i)."</td>"; 
                $count++; 
            } 
        }else{
            for($i = ($daysofprevmonth-7 -$weekofbeginday)+1 ; $i <= $daysofprevmonth; $i++){ 
                echo "<td style='background:#ccc'>".$i."</td>";
                if($count%7==0) echo "</tr><tr>"; 
                $count++; 
            } 
        }
       
        //当月全部 
        for($i = 1 ; $i <= $daysofmonth ; $i++) 
            { 
                $css = ($count%7==0 || $count%7==1)?"weekday":"normalday"; 
                if($i == @$today) $css .= "today";
                if(date('d')==$i && date('m')==$month){
                     echo "<td style='background:red'>".$i."</td>"; 
                }else{
                    echo "<td>".$i."</td>";
                }            
                if($count%7==0) echo "</tr><tr>"; 
                $count++; 
            } 
        //下月前几天
        $l = (43-$count);
        // for ($i = 1;$i <= 6-$weekofendday;$i++){
        for ($i = 1;$i <= $l;$i++){
            if($count>42){
                break;
            }
            
            echo "<td {$css} style='background:#ccc'>".$i."</td>"; 
            if($count%7==0) echo "</tr><tr>"; 
            $count++; 
        }
        echo '<td colspan="7"><a href="?y='.date('Y').'&m='.date('m').'&d='.date('d').'">今日</a></td></tr> </table>';
    } 
    ?>

    HTML

    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>calendar</title>
    <style type="text/css"> 
    <!-- /* table细线表格 */ 
        table { 
            border-collapse:collapse;     /* 关键属性:合并表格内外边框(其实表格边框有2px,外面1px,里面还有1px哦) */ 
            border:solid #999;             /* 设置边框属性;样式(solid=实线)、颜色(#999=灰) */ 
            border-width:1px 0 0 1px;     /* 设置边框状粗细:上 右 下 左 = 对应:1px 0 0 1px */ 
        } 
        table th,table td {border:solid #999;border-width:0 1px 1px 0;padding:2px;} 
        table td {text-align:center;} 
    --> 
    </style> 
    </head>
    <body> 
    <?php calendar();?> 
    </body> 
    </html>
  • 相关阅读:
    RESTful API设计指南(转载)
    理解RESTful架构(转载)
    什么是FreeMaker?
    为了梦,向前冲!
    php时间输出结果减去一分钟
    利用css+js制作下拉列表
    zzz的口胡记
    UOJ507. 【JOISC2020】星座3(贪心)
    vim使用小记
    UOJ#62【UR #5】怎样跑得更快(反演)
  • 原文地址:https://www.cnblogs.com/phpfensi/p/4670303.html
Copyright © 2020-2023  润新知