当前位置:首页 > PHP

php 实现日历

2026-01-29 18:51:34PHP

使用 PHP 实现日历

基础日历实现

PHP 可以通过日期函数和循环结构实现一个简单的日历。以下是一个基础示例:

<?php
function generateCalendar($year, $month) {
    $firstDay = mktime(0, 0, 0, $month, 1, $year);
    $daysInMonth = date("t", $firstDay);
    $dayOfWeek = 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 < $dayOfWeek; $i++) {
        echo "<td></td>";
    }

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

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

generateCalendar(2023, 11);
?>

带样式的日历

可以添加 CSS 样式使日历更美观:

php 实现日历

<style>
.calendar {
    font-family: Arial, sans-serif;
    border-collapse: collapse;
    width: 300px;
}
.calendar th {
    background-color: #f2f2f2;
    text-align: center;
    padding: 8px;
}
.calendar td {
    border: 1px solid #ddd;
    text-align: center;
    padding: 8px;
}
.calendar td:hover {
    background-color: #f5f5f5;
}
</style>

可导航的日历

添加月份导航功能:

php 实现日历

<?php
$currentMonth = isset($_GET['month']) ? $_GET['month'] : date('n');
$currentYear = isset($_GET['year']) ? $_GET['year'] : date('Y');

function getNextMonth($month, $year) {
    if ($month == 12) {
        return [1, $year + 1];
    }
    return [$month + 1, $year];
}

function getPrevMonth($month, $year) {
    if ($month == 1) {
        return [12, $year - 1];
    }
    return [$month - 1, $year];
}

list($prevMonth, $prevYear) = getPrevMonth($currentMonth, $currentYear);
list($nextMonth, $nextYear) = getNextMonth($currentMonth, $currentYear);
?>

<a href="?month=<?= $prevMonth ?>&year=<?= $prevYear ?>">Previous</a>
<span><?= date('F Y', mktime(0, 0, 0, $currentMonth, 1, $currentYear)) ?></span>
<a href="?month=<?= $nextMonth ?>&year=<?= $nextYear ?>">Next</a>

<?php generateCalendar($currentYear, $currentMonth); ?>

带事件的日历

可以扩展日历以显示事件:

$events = [
    '2023-11-15' => 'Team Meeting',
    '2023-11-20' => 'Project Deadline'
];

function generateCalendarWithEvents($year, $month, $events) {
    // 前面的日历生成代码...

    for ($day = 1; $day <= $daysInMonth; $day++) {
        $date = sprintf("%04d-%02d-%02d", $year, $month, $day);
        $event = isset($events[$date]) ? $events[$date] : '';

        if (($day + $dayOfWeek - 1) % 7 == 0 && $day != 1) {
            echo "</tr><tr>";
        }
        echo "<td>$day<br><small>$event</small></td>";
    }

    // 后面的日历生成代码...
}

使用 DateTime 类

现代 PHP 推荐使用 DateTime 类:

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

    // 其余日历生成逻辑类似
}

这些方法展示了如何使用 PHP 创建各种功能的日历,从基本显示到添加导航和事件功能。

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

相关文章

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现接口

php实现接口

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