PHP PHP中的简单日历

Posted

tags:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>Kalender</title>

        <style type="text/css">
            body{
                width: 300px;
                margin: 100px auto;
                background-color: #999999;
                text-align: center;
                font-family:"Trebuchet MS", arial, verdana;
                font-size: 12px;
            }
            #ContentBox{
                width: 250px;
                border: thin #333333 solid;
            }

            table{
                width: 100%;
                border-collapse: collapse;
                background-color:  #fffeff;

            }
            th{
                background-color: #333333;
                color: #F4F4F4;
                font-size: 14px;

            }
            tr.nav{
                border-bottom: thin #333333 solid ;

            }
            a:link{
                text-decoration: none;
                color: black;
            }
            a:visited{
                text-decoration: none;
                color: black;
            }
            a:hover{
                text-decoration: none;
                color: white;
            }
            a:active{
                text-decoration: none;
                color: black;
            }
            .navig:link{
                font-weight: bold;
                display: block;
                text-decoration: none;
            }
            .navig:visited{
                font-weight: bold;
                background-color: #999999;
                text-decoration: none;
            }
            .navig:hover{
                font-weight: bold;
                background-color: #333333;
                text-decoration: none;
                color:white;
            }
            .navig:active{
                font-weight: bold;
                background-color: #333333;
                text-decoration: none;
                color:white;
            }
            .today{
                font-weight: bold;
                text-decoration: underline ;
            }
            .sunday{
                background-color: #CCCCCC;
            }
            .todaysunday{
                font-weight: bold;
                background-color: #990000;
            }

        </style>
    </head>

    <body>

        <?php

        function SmallCalender(){
            if (!isset($_GET["month"])){
                $_GET["month"] = date("n"); //n = Numeric representation of a month, without leading zeros
                $week_day = date("N");
            };

            if (!isset($_GET["year"])){
                $_GET["year"] = date("Y"); // Y = A full numeric representation of a year, 4 digits
            };

            if (!isset($_GET["week"])){
                $_GET["week"] = date("W"); // W = ISO-8601 week number of year, weeks starting on Monday
            };
            if (!isset($_GET["day"])){
                $_GET["day"] = date("j"); // j = Day of the month without leading zeros
            };

            //Define current month, year and date
            $cMonth = $_GET["month"];
            $cYear = $_GET["year"];
            $cWeek = $_GET["week"];
            $cDay = $_GET["day"];

            $today = date("jnY");
            $this_date = mktime(0, 0, 0, $cMonth, $cDay, $cYear);

            

            //Calling to itself
            $self = @$_SERVER["PHP_SELF"];

            //Variables for previous-next month and previous-next year
            $prev_year = $cYear;
            $next_year = $cYear;
            $prev_month = $cMonth - 1;
            $next_month = $cMonth + 1;

            //Behaviour when months move from 1 to 12 and go to previous year
            if ($prev_month == 0){
                $prev_month = 12;
                $prev_year = $cYear - 1;
            };

            //Behaviour when months move from 12 to 1 and go to next year
            if ($next_month == 13){
                $next_month = 1;
                $next_year = $cYear + 1;
            };

            //Check last day of the current month
            $lastday = date("j", mktime(0, 0, 0 - 1, $cMonth + 1, 1, $cYear));

            //Count days in current month
            $total_days = date("t", $this_date);

            //Get numeric representation of day week ISO-8601
            $week_day = date("N", $this_date);

            $daynames = array(
                "",
                "Man",
                "Tir",
                "Ons",
                "Tor",
                "Fre",
                "Lør",
                "Søn",
            );

            $monthnames = array("",
                "Januar",
                "Februar",
                "Marts",
                "April",
                "Maj",
                "Juni",
                "Juli",
                "August",
                "September",
                "Oktober",
                "November",
                "December"
            );
            //---------- echoing year and month navigation -------------------------------------------------

            echo "<table>";


            echo "<tr class=\"nav\">"; //upper row links to prev and next months

            echo "<th colspan=\"6\">
                    <strong>
                    ".$monthnames[$cMonth]." ".$cYear."
                    </strong>
                    </th>";

            echo "<td >";
            echo "<a class=\"navig\" href='".$self."?month=".$prev_month."&year=".$prev_year."'>
                    <
                    </a>
                    </td><td>
                    <a class=\"navig\" href = '".$self."?month=".$next_month."&year=".$next_year."'>
                    >
                    </a>";
            echo "</td>";
            echo "</tr>";

            echo "<tr>";
            echo "<td>
                    Uge
                    </td>";
            $cell = 1;
            while ($cell <= 7){
                if ($cell == 7){
                    $style =  " class=\"sunday\"";
                }else{
                    $style = "";
                }
                echo "<td {$style}>";
                echo $daynames[$cell];
                echo "</td>";
                $cell++;
            }
            echo "</tr>";

            echo "<tr>";


            //Print empty cells - Add weeknumbers
            $firstday = date("N", mktime(0, 0, 0, $cMonth, 1, $cYear));
            $w = date("W", mktime(0, 0, 0, $cMonth, 1, $cYear));

            if ($firstday > 1){
                echo "<td> <a href='".$self."?week=".$w."&month=".$cMonth."&year=".$cYear."'>";
                echo $w;
                echo "</a></td>";
                for ($empty_cell = 1; $empty_cell < $firstday; $empty_cell++){

                    echo "<td> </td>";
                }
            }
            for ($d = 1; $d <= $lastday; $d++){

                $N = date("N", mktime(0, 0, 0, $cMonth, $d, $cYear));
                $w = date("W", mktime(0, 0, 0, $cMonth, $d, $cYear));
                $j = date("jnY", mktime(0, 0, 0, $cMonth, $d, $cYear));
                if ($N == 7){
                    $style = " class=\"sunday\"";
                }elseif ($j == $today){

                    $style = " class=\"today\"";
                }elseif ($j == $today && $N == 7){

                    $style = " class=\"todaysunday\"";
                }else{
                    $style = " ";
                }
                if ($N == 1){
                    echo "</tr><tr>";
                    echo "<td {$style} ><a href='".$self."?week=".$w."&month=".$cMonth."&year=".$cYear."'>";
                    echo $w;
                    echo "</a></td>";
                }


                echo "<td {$style}> <a href='".$self."?day=".$d."&month=".$cMonth."&year=".$cYear."'>";
                echo $d;
                echo "</a></td>";
            }

            echo "</tr>";
            echo "</table>";

            $thismonth = date('n');
            $this_year = date("Y", time());
            
            //Link to current date ****
            if ($cMonth <> $thismonth or $cYear <> $this_year){
                echo "<a class=\"a\" href='".$self."?month=".$thismonth."&year=".$this_year."'>
                Vis nuværende måned
                </a>";
            }
        }

        echo "<div id='ContentBox'>";
        SmallCalender();
        echo "</div>";
        ?>

    </body>
</html>

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

PHP中的国际化日历类

PHP日历程序编写(简单实现)

用php做个简单的日历

PHP中的国际化日历类

PHP制作日历

PHP 删除日历框中的“空日”div