当前位置:首页 > PHP

php实现一个日历表

2026-02-28 05:13:59PHP

实现PHP日历表的方法

使用PHP内置函数生成日历

PHP内置的cal_days_in_monthdate函数可以方便地生成日历。以下代码创建一个基本的月历视图:

php实现一个日历表

function generateCalendar($year, $month) {
    $daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    $firstDay = date('N', strtotime("$year-$month-01"));

    echo "<table border='1'>";
    echo "<tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr>";

    $dayCount = 1;
    echo "<tr>";
    for ($i = 1; $i < $firstDay; $i++) {
        echo "<td></td>";
    }

    for ($i = $firstDay; $i <= 7; $i++) {
        echo "<td>$dayCount</td>";
        $dayCount++;
    }
    echo "</tr>";

    while ($dayCount <= $daysInMonth) {
        echo "<tr>";
        for ($i = 1; $i <= 7 && $dayCount <= $daysInMonth; $i++) {
            echo "<td>$dayCount</td>";
            $dayCount++;
        }
        echo "</tr>";
    }
    echo "</table>";
}

generateCalendar(date('Y'), date('m'));

添加导航功能

扩展日历功能,添加月份和年份导航:

php实现一个日历表

function calendarWithNavigation() {
    $year = isset($_GET['year']) ? $_GET['year'] : date('Y');
    $month = isset($_GET['month']) ? $_GET['month'] : date('m');

    $prevMonth = $month - 1;
    $prevYear = $year;
    if ($prevMonth < 1) {
        $prevMonth = 12;
        $prevYear--;
    }

    $nextMonth = $month + 1;
    $nextYear = $year;
    if ($nextMonth > 12) {
        $nextMonth = 1;
        $nextYear++;
    }

    echo "<div style='text-align:center;'>";
    echo "<a href='?year=$prevYear&month=$prevMonth'>Previous</a> ";
    echo date('F Y', strtotime("$year-$month-01"));
    echo " <a href='?year=$nextYear&month=$nextMonth'>Next</a>";
    echo "</div>";

    generateCalendar($year, $month);
}

calendarWithNavigation();

高亮当前日期

修改日历函数,突出显示当前日期:

function generateCalendarWithHighlight($year, $month) {
    $currentDay = date('j');
    $currentMonth = date('n');
    $currentYear = date('Y');

    $daysInMonth = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    $firstDay = date('N', strtotime("$year-$month-01"));

    echo "<table border='1'>";
    echo "<tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr>";

    $dayCount = 1;
    echo "<tr>";
    for ($i = 1; $i < $firstDay; $i++) {
        echo "<td></td>";
    }

    for ($i = $firstDay; $i <= 7; $i++) {
        $highlight = ($dayCount == $currentDay && $month == $currentMonth && $year == $currentYear) ? "style='background-color:yellow;'" : "";
        echo "<td $highlight>$dayCount</td>";
        $dayCount++;
    }
    echo "</tr>";

    while ($dayCount <= $daysInMonth) {
        echo "<tr>";
        for ($i = 1; $i <= 7 && $dayCount <= $daysInMonth; $i++) {
            $highlight = ($dayCount == $currentDay && $month == $currentMonth && $year == $currentYear) ? "style='background-color:yellow;'" : "";
            echo "<td $highlight>$dayCount</td>";
            $dayCount++;
        }
        echo "</tr>";
    }
    echo "</table>";
}

使用DateTime类实现

更现代的PHP实现方式,使用DateTime类:

function calendarUsingDateTime($year, $month) {
    $date = new DateTime("$year-$month-01");
    $daysInMonth = $date->format('t');
    $firstDay = $date->format('N');

    echo "<table border='1'>";
    echo "<tr><th>Mon</th><th>Tue</th><th>Wed</th><th>Thu</th><th>Fri</th><th>Sat</th><th>Sun</th></tr>";

    $dayCount = 1;
    echo "<tr>";
    for ($i = 1; $i < $firstDay; $i++) {
        echo "<td></td>";
    }

    for ($i = $firstDay; $i <= 7; $i++) {
        echo "<td>$dayCount</td>";
        $dayCount++;
    }
    echo "</tr>";

    while ($dayCount <= $daysInMonth) {
        echo "<tr>";
        for ($i = 1; $i <= 7 && $dayCount <= $daysInMonth; $i++) {
            echo "<td>$dayCount</td>";
            $dayCount++;
        }
        echo "</tr>";
    }
    echo "</table>";
}

这些方法提供了不同复杂度的PHP日历实现,从基本功能到包含导航和高亮功能的完整日历系统。可以根据项目需求选择适合的实现方式或进行组合使用。

标签: 日历表php
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数:…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT A…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…