Rumah pembangunan bahagian belakang tutorial php 浅析怎么使用PHP实现简单的日历程序?(附代码)

浅析怎么使用PHP实现简单的日历程序?(附代码)

Jul 29, 2016 am 08:35 AM
php

怎么使用PHP实现简单的日历程序?本篇文章就通过一个代码示例来大家了解一下使用PHP实现简单日历程序的方法,希望对大家有帮助。

浅析怎么使用PHP实现简单的日历程序?(附代码)

说到对日期和时间的处理,就一定要介绍一下日历程序的编写,大多数读者可能都会认为日历的作用只是为了在页面上显示当前的日期,其实不然,日历在我们的开发中有着更重要的作用。例如,我们开发一个“记事本”就需要通过日历设定日期,另外在一些系统中需要按日期去安排任务也需要用到日历等等。

本节的示例中涉及的日期和时间函数并不是很多,都是前面介绍的,主要是通过编写一个日历类来巩固一下前面介绍的面向对象,以及时间函数应用,同时示例中涉及到一些前端知识,感兴趣的读者可以阅读本站提供的 HTML教程 和 CSS 教程

完整的示例代码如下所示:

<?php
    class Calendar{
        private $year, $month, $start_week, $days;
        /**
         * 构造方法,用来初始化一些日期属性
         */
        function __construct(){
            $this->year = isset($_GET[&#39;year&#39;])?$_GET[&#39;year&#39;]:date(&#39;Y&#39;);
            $this->month = isset($_GET[&#39;month&#39;])?$_GET[&#39;month&#39;]:date(&#39;m&#39;);
            $this->start_week = date(&#39;w&#39;, mktime(0, 0, 0, $this->month, 1, $this->year));
            $this->days = date(&#39;t&#39;, mktime(0, 0, 0, $this->month, 1, $this->year));
        }
        /**
         * 魔术方法,用来打印整个日历
         * @return string [日历的html代码]
         */
        function __toString(){
            $output = &#39;&#39;;
            $output = &#39;<table>&#39;;
            $output .= $this->changeDate();
            $output .= $this->weeksList();
            $output .= $this->daysList();
            $output .= &#39;</table>&#39;;
            return $output;
        }
        /**
         * 输出周列表
         * @return [string] [html 代码]
         */
        private function weeksList($output=&#39;&#39;){
            $week = array(&#39;日&#39;,&#39;一&#39;,&#39;二&#39;,&#39;三&#39;,&#39;四&#39;,&#39;五&#39;,&#39;六&#39;);
            $output .= &#39;<tr>&#39;;
            for ($i=0; $i < count($week); $i++) {
                $output .= &#39;<th>&#39;.$week[$i].&#39;</th>&#39;;
            }
            $output .= &#39;</tr>&#39;;
            return $output;
        }
        /**
         * 输出日期列表
         * @return [string]
         */
        private function daysList($output=&#39;&#39;){
            $output .= &#39;<tr>&#39;;
            for ($i=0; $i < $this->start_week; $i++) {
                $output .= &#39;<td> </td>&#39;;
            }
            for ($j=1; $j <= $this->days; $j++) {
                $i++;
                if($j == date(&#39;d&#39;) && $this->year == date(&#39;Y&#39;) && $this->month == date(&#39;m&#39;)){
                    $output .= &#39;<td>&#39;.$j.&#39;</td>&#39;;
                }else{
                    $output .= &#39;<td>&#39;.$j.&#39;</td>&#39;;
                }
                if($i%7 == 0) $output .= &#39;</tr><tr>&#39;;
            }
            while($i%7 !== 0){
                $output .= &#39;<td> </td>&#39;;
                $i++;
            }
            $output .= &#39;</tr>&#39;;
            return $output;
        }
        /**
         * 处理上一年的数据
         * @param  [type] $year  [年份]
         * @param  [type] $month [月份]
         * @return [type]        [description]
         */
        private function prevYear($year, $month){
            $year -= 1;
            if($year < 1970) $year = 1970;
            return "year=$year&month=$month";
        }
        /**
         * 处理上一月的数据
         * @param  [type] $year  [年份]
         * @param  [type] $month [月份]
         * @return [type]        [description]
         */
        private function prevMonth($year, $month){
            if($month == 1){
                $year -= 1;
                if($year < 1970) $year = 1970;
                $month = 12;
            }else{
                $month--;
            }
            return "year=$year&month=$month";
        }
        /**
         * 处理下一年的数据
         * @param  [type] $year  [年份]
         * @param  [type] $month [月份]
         * @return [type]        [description]
         */
        private function nextYear($year, $month){
            $year += 1;
            if($year > 2038) $year = 2038;
            return "year=$year&month=$month";
        }
        /**
         * 处理下一月的数据
         * @param  [type] $year  [年份]
         * @param  [type] $month [月份]
         * @return [type]        [description]
         */
        private function nextMonth($year, $month){
            if($month == 12){
                $year --;
                if($year > 2038) $year = 2038;
                $month = 1;
            }else{
                $month++;
            }
            return "year=$year&month=$month";
        }
        /**
         * 调整年份和月份
         * @param  string $output [html代码]
         * @param  string $url   
         * @return [type]        
         */
        private function changeDate($output=&#39;&#39;, $url=&#39;index.php&#39;){
            $output .= &#39;<tr>&#39;;
            $output .= &#39;<td><a href="&#39;.$url.&#39;?&#39;.$this->prevYear($this->year, $this->month).&#39;">&#39;.&#39;<<&#39;.&#39;</a></td>&#39;;
            $output .= &#39;<td><a href="&#39;.$url.&#39;?&#39;.$this->prevMonth($this->year, $this->month).&#39;">&#39;.&#39;<&#39;.&#39;</a></td>&#39;;
            $output .= &#39;<td colspan="3">&#39;;
            $output .= &#39;<form>&#39;;
            $output .= &#39;<select name="year" onchange="window.location=\&#39;&#39;.$url.&#39;?year=\&#39;+this.options[selectedIndex].value+\&#39;&month=&#39;.$this->month.&#39;\&#39;">&#39;;
            for ($i=1970; $i <=2038; $i++) {
                $selected = ($i == $this->year)?&#39;selected="selected"&#39;:&#39;&#39;;
                $output .= &#39;<option value="&#39;.$i.&#39;" &#39;.$selected.&#39;>&#39;.$i.&#39;</option>&#39;;
            }
            $output .= &#39;</select>&#39;;
            $output .= &#39;<select name="month" onchange="window.location=\&#39;&#39;.$url.&#39;?year=&#39;.$this->year.&#39;&month=\&#39;+this.options[selectedIndex].value">&#39;;
            for ($j=1; $j <=12; $j++) {
                $selected = ($j == $this->month)?&#39;selected="selected"&#39;:&#39;&#39;;
                $output .= &#39;<option value="&#39;.$j.&#39;" &#39;.$selected.&#39;>&#39;.$j.&#39;</option>&#39;;
            }
            $output .= &#39;</select>&#39;;
            $output .= &#39;</form>&#39;;
            $output .= &#39;</td>&#39;;
            $output .= &#39;<td><a href="&#39;.$url.&#39;?&#39;.$this->nextMonth($this->year, $this->month).&#39;">&#39;.&#39;>&#39;.&#39;</a></td>&#39;;
            $output .= &#39;<td><a href="&#39;.$url.&#39;?&#39;.$this->nextYear($this->year, $this->month).&#39;">&#39;.&#39;>>&#39;.&#39;</a></td>&#39;;
            $output .= &#39;</tr>&#39;;
            return $output;
        }
    }
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>PHP实现简单的日历程序</title>
    <style>
        table{
            border: 1px solid #ccc;
        }
        .fontb{
            color: white;
            background: blue;
        }
        th{
            width: 30px;
        }
        td,th{
            height:30px;
            text-align: center;
        }
        form{
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
<body>
    <?php
        $calendar = new Calendar;
        echo $calendar;
    ?>
</body>
</html>
Salin selepas log masuk

运行结果如下图所示:

1.png

推荐学习:《PHP视频教程

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles