当前位置:首页 > PHP

php 实现日历

2026-02-28 16:07:38PHP

php 实现日历

PHP 实现日历的方法

使用 PHP 可以轻松实现一个日历功能,以下是几种常见的实现方式:

基础日历实现

function generateCalendar($year, $month) {
    $firstDay = mktime(0, 0, 0, $month, 1, $year);
    $daysInMonth = date('t', $firstDay);
    $firstDayOfWeek = date('w', $firstDay);

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

    echo "<tr>";
    for ($i = 0; $i < $firstDayOfWeek; $i++) {
        echo "<td></td>";
    }

    $currentDay = 1;
    while ($currentDay <= $daysInMonth) {
        if (($currentDay + $firstDayOfWeek - 1) % 7 == 0 && $currentDay != 1) {
            echo "</tr><tr>";
        }
        echo "<td>$currentDay</td>";
        $currentDay++;
    }

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

generateCalendar(2023, 11);

使用 DateTime 类实现

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

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

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

    $dayCount = 1;
    while ($dayCount <= $daysInMonth) {
        if (($dayCount + $firstDay - 1) % 7 == 0 && $dayCount != 1) {
            echo "</tr><tr>";
        }
        echo "<td>$dayCount</td>";
        $dayCount++;
    }

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

createCalendar(2023, 11);

带导航功能的日历

function calendarWithNavigation($year = null, $month = null) {
    $currentYear = $year ?? date('Y');
    $currentMonth = $month ?? date('m');

    $prevMonth = $currentMonth - 1;
    $prevYear = $currentYear;
    if ($prevMonth < 1) {
        $prevMonth = 12;
        $prevYear--;
    }

    $nextMonth = $currentMonth + 1;
    $nextYear = $currentYear;
    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', mktime(0, 0, 0, $currentMonth, 1, $currentYear));
    echo " <a href='?year=$nextYear&month=$nextMonth'>Next</a>";
    echo "</div>";

    generateCalendar($currentYear, $currentMonth);
}

calendarWithNavigation($_GET['year'] ?? null, $_GET['month'] ?? null);

带事件标记的日历

function calendarWithEvents($year, $month, $events = []) {
    $firstDay = mktime(0, 0, 0, $month, 1, $year);
    $daysInMonth = date('t', $firstDay);
    $firstDayOfWeek = date('w', $firstDay);

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

    echo "<tr>";
    for ($i = 0; $i < $firstDayOfWeek; $i++) {
        echo "<td></td>";
    }

    $currentDay = 1;
    while ($currentDay <= $daysInMonth) {
        if (($currentDay + $firstDayOfWeek - 1) % 7 == 0 && $currentDay != 1) {
            echo "</tr><tr>";
        }

        $dateKey = "$year-$month-$currentDay";
        $eventMark = isset($events[$dateKey]) ? "<br><small>" . $events[$dateKey] . "</small>" : "";
        echo "<td>$currentDay$eventMark</td>";
        $currentDay++;
    }

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

$sampleEvents = [
    '2023-11-15' => 'Meeting',
    '2023-11-20' => 'Birthday'
];

calendarWithEvents(2023, 11, $sampleEvents);

这些方法提供了不同复杂程度的 PHP 日历实现,可以根据具体需求选择适合的方案或进行组合使用。

php 实现日历

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

相关文章

vue日历实现

vue日历实现

实现基础日历布局 使用Vue的模板语法构建日历的基本HTML结构。一个典型的日历包含星期标题和日期格子,可以通过v-for循环生成。月份切换功能通过计算属性动态更新日期数组。 <templa…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php实现表单

php实现表单

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

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Cont…