当前位置:首页 > PHP

php 实现日历

2026-02-28 16:07:38PHP

php 实现日历

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实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_I…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php 实现跳转

php 实现跳转

PHP 实现页面跳转的方法 在PHP中,实现页面跳转可以通过多种方式完成,以下是几种常用的方法: 使用header函数 header函数是PHP中最常用的跳转方法,通过发送HTTP头部信息实现跳转。…

php 实现聊天功能

php 实现聊天功能

PHP 实现聊天功能的方法 使用 WebSocket 和 Ratchet 库 WebSocket 是实现实时聊天的理想选择。Ratchet 是一个 PHP 库,用于处理 WebSocket 连接。…

php 实现多继承

php 实现多继承

在PHP中,原生不支持多继承,但可以通过以下几种方法模拟实现类似多继承的功能: 使用 trait Trait是PHP 5.4引入的特性,允许在类中复用代码片段,可以视为一种轻量级的继承机制。一个类可…