当前位置:首页 > 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实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现文件下载

php实现文件下载

PHP实现文件下载的方法 通过PHP实现文件下载功能,可以采用多种方式,以下是几种常见的实现方法: 使用header()函数强制下载 设置HTTP头信息,强制浏览器下载文件而非直接打开: $fi…

php实现增删改查

php实现增删改查

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

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…