当前位置:首页 > PHP

php实现一个日历表

2026-01-29 08:01:04PHP

实现日历表的基本思路

日历表的核心是根据给定年份和月份,计算该月的天数、起始星期,并生成对应的日期排列。PHP提供了丰富的日期时间函数,可以简化计算过程。

获取月份的基本信息

使用date()cal_days_in_month()函数获取当前月份的天数和第一天是星期几:

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

生成日历表格结构

创建一个HTML表格,表头显示星期几。根据起始星期调整第一行的空白单元格:

php实现一个日历表

echo '<table border="1">';
echo '<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>';

echo '<tr>';
// 填充第一行前面的空白
for ($i = 0; $i < $firstDay; $i++) {
    echo '<td></td>';
}

填充日期单元格

循环填充日期,每7天换行:

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

// 填充剩余行
while ($dayCount <= $daysInMonth) {
    echo '<tr>';
    for ($i = 0; $i < 7 && $dayCount <= $daysInMonth; $i++) {
        echo '<td>' . $dayCount . '</td>';
        $dayCount++;
    }
    echo '</tr>';
}
echo '</table>';

完整代码示例

将上述代码整合为一个完整的日历生成函数:

php实现一个日历表

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

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

    echo '<table border="1">';
    echo '<tr><th>日</th><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th></tr>';

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

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

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

// 使用示例
generateCalendar(2023, 5);

样式优化建议

为日历添加CSS样式,提升视觉效果:

echo '<style>
    table {
        border-collapse: collapse;
        width: 300px;
    }
    th, td {
        border: 1px solid #ddd;
        padding: 8px;
        text-align: center;
    }
    th {
        background-color: #f2f2f2;
    }
</style>';

扩展功能

  1. 添加月份导航:

    echo '<div>
        <a href="?year='.($month == 1 ? $year-1 : $year).'&month='.($month == 1 ? 12 : $month-1).'">上个月</a>
        <span>'.$year.'年'.$month.'月</span>
        <a href="?year='.($month == 12 ? $year+1 : $year).'&month='.($month == 12 ? 1 : $month+1).'">下个月</a>
    </div>';
  2. 高亮当前日期:

    $currentDay = date('j');
    if ($year == date('Y') && $month == date('m') && $dayCount == $currentDay) {
        echo '<td style="background-color:yellow;">' . $dayCount . '</td>';
    } else {
        echo '<td>' . $dayCount . '</td>';
    }

这个实现提供了基本的日历功能,可以根据需要进一步扩展样式和交互功能。

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

相关文章

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERVER…

php实现搜索

php实现搜索

PHP实现搜索功能的方法 在PHP中实现搜索功能通常涉及数据库查询和用户输入的匹配。以下是几种常见的实现方式: 使用MySQL LIKE语句 通过简单的LIKE语句实现基础搜索: $searc…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必…

php实现接口

php实现接口

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

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ?…