下面我将为你提供一个详细的指南,包括:

bootstrap自带日历的网页模板
(图片来源网络,侵删)
  1. 推荐组件:为什么推荐 Bootstrap Datepicker
  2. 完整代码模板:一个可以直接复制使用的、包含日期选择器和范围选择的网页模板。
  3. 功能详解:代码中各个部分的解释。
  4. 更多选择:除了 Datepicker 之外,还有哪些优秀的 Bootstrap 日历插件。

推荐组件:Bootstrap Datepicker

Bootstrap Datepicker 是一个专门为 Bootstrap 设计的日期选择器插件,它的优点非常突出:

  • 样式统一:完美融入 Bootstrap 的视觉风格,无需额外编写 CSS。
  • 功能强大:支持日期选择、月份/年份选择、日期范围限制、清空按钮等。
  • 易于使用:通过简单的 HTML 属性和几行 JavaScript 初始化即可。
  • 文档完善:有详细的官方文档和丰富的示例。

完整网页模板(可直接复制使用)

这个模板包含了单个日期选择器和日期范围选择器,并包含了必要的样式和脚本。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">Bootstrap 日历模板</title>
    <!-- 1. 引入 Bootstrap CSS (使用 CDN) -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <!-- 2. 引入 Bootstrap Datepicker 的 CSS (使用 CDN) -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-datepicker@1.10.0/dist/css/bootstrap-datepicker.min.css">
    <style>
        /* 自定义一些间距,让页面更好看 */
        body {
            padding: 40px;
        }
        .form-group {
            margin-bottom: 2rem;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1 class="mb-4">Bootstrap Datepicker 示例</h1>
        <p class="lead">下面是两种常见的日期选择器用法。</p>
        <!-- 示例 1: 单个日期选择器 -->
        <div class="row">
            <div class="col-md-6">
                <h3>单个日期选择器</h3>
                <div class="input-group date" id="datepicker1" data-date-format="yyyy-mm-dd">
                    <input type="text" class="form-control" placeholder="选择一个日期">
                    <span class="input-group-text">
                        <i class="bi bi-calendar3"></i> <!-- Bootstrap Icons 图标 -->
                    </span>
                </div>
                <small class="text-muted">格式: yyyy-mm-dd</small>
            </div>
        </div>
        <hr class="my-4">
        <!-- 示例 2: 日期范围选择器 (开始和结束日期) -->
        <div class="row">
            <div class="col-md-6">
                <h3>日期范围选择器</h3>
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="start-date">开始日期</label>
                            <div class="input-group date" id="start-date" data-date-format="yyyy-mm-dd">
                                <input type="text" class="form-control" placeholder="开始日期">
                                <span class="input-group-text">
                                    <i class="bi bi-calendar3"></i>
                                </span>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="end-date">结束日期</label>
                            <div class="input-group date" id="end-date" data-date-format="yyyy-mm-dd">
                                <input type="text" class="form-control" placeholder="结束日期">
                                <span class="input-group-text">
                                    <i class="bi bi-calendar3"></i>
                                </span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <hr class="my-4">
        <!-- 示例 3: 带有更多选项的日期选择器 -->
        <div class="row">
            <div class="col-md-6">
                <h3>高级选项示例</h3>
                <div class="input-group date" id="datepicker3" data-date-format="dd/mm/yyyy" data-date-autoclose="true" data-date-today-btn="linked" data-date-today-highlight="true">
                    <input type="text" class="form-control" placeholder="选择日期 (dd/mm/yyyy)">
                    <span class="input-group-text">
                        <i class="bi bi-calendar3"></i>
                    </span>
                </div>
                <small class="text-muted">功能: 自动关闭、今天按钮、高亮今天</small>
            </div>
        </div>
    </div>
    <!-- 3. 引入 Bootstrap JS (Popper.js 是 Bootstrap 5 的依赖) -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
    <!-- 4. 引入 jQuery (Bootstrap Datepicker 依赖 jQuery) -->
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <!-- 5. 引入 Bootstrap Datepicker 的 JS (使用 CDN) -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap-datepicker@1.10.0/dist/js/bootstrap-datepicker.min.js"></script>
    <!-- 6. (可选) 引入 Bootstrap Datepicker 的语言包 (中文) -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap-datepicker@1.10.0/dist/locales/bootstrap-datepicker.zh-CN.min.js"></script>
    <!-- 7. 初始化 Datepicker -->
    <script>
        $(function () {
            // 初始化第一个日期选择器
            $('#datepicker1').datepicker();
            // 初始化日期范围选择器
            // 通过设置 'endDate' 来联动两个日期选择器
            $('#start-date').datepicker({
                format: 'yyyy-mm-dd',
                autoclose: true,
                todayHighlight: true
            }).on('changeDate', function(selected) {
                var startDate = new Date(selected.date.valueOf());
                startDate.setDate(startDate.getDate(new Date(selected.date.valueOf())));
                $('#end-date').datepicker('setStartDate', startDate);
            });
            $('#end-date').datepicker({
                format: 'yyyy-mm-dd',
                autoclose: true,
                todayHighlight: true
            }).on('changeDate', function(selected) {
                var endDate = new Date(selected.date.valueOf());
                endDate.setDate(endDate.getDate(new Date(selected.date.valueOf())));
                $('#start-date').datepicker('setEndDate', endDate);
            });
            // 初始化第三个高级日期选择器
            $('#datepicker3').datepicker({
                format: 'dd/mm/yyyy',
                autoclose: true,
                todayBtn: "linked", // 'linked' 表示今天按钮可以快速选中今天
                todayHighlight: true
            });
            // (可选) 设置全局语言
            $('.date').datepicker({
                language: 'zh-CN', // 应用中文语言包
                todayHighlight: true // 高亮今天
            });
        });
    </script>
</body>
</html>

功能详解

关键步骤分解:

  1. 引入 CSS 和 JS 文件:

    • bootstrap.min.css: Bootstrap 的核心样式。
    • bootstrap-datepicker.min.css: Datepicker 的样式文件。
    • jquery.min.js: Datepicker 依赖于 jQuery。
    • bootstrap.bundle.min.js: Bootstrap 的 JS 文件,包含 Popper.js。
    • bootstrap-datepicker.min.js: Datepicker 的核心 JS 文件。
    • bootstrap-datepicker.zh-CN.min.js: 中文语言包,让日历显示中文。非常重要!
  2. HTML 结构:

    bootstrap自带日历的网页模板
    (图片来源网络,侵删)
    • 将日期选择器放在一个带有 .input-groupdiv 容器中。
    • 这个 div 需要一个唯一的 id(如 id="datepicker1"),方便 JS 初始化。
    • div 内部,<input type="text"> 用于接收用户选择的日期。
    • <span class="input-group-text"> 用于添加日历图标,提升用户体验。
  3. 初始化 (JavaScript):

    • 使用 $(function() { ... }); 确保 DOM 加载完成后再执行脚本。
    • $('#datepicker1').datepicker();:通过 jQuery 选择器找到对应的 div,并调用 .datepicker() 方法进行初始化。

*常用配置选项 (通过 `data-date-` 属性或 JS 传递):**

  • data-date-format="yyyy-mm-dd": 设置日期的显示格式。
    • yyyy: 年 (e.g., 2025)
    • mm: 月 (e.g., 10)
    • dd: 日 (e.g., 26)
  • data-date-autoclose="true": 选择日期后自动关闭日历。
  • data-date-today-btn="linked": 添加一个“按钮,点击后自动选中今天。
  • data-date-today-highlight="true": 高亮显示今天的日期。
  • data-date-start-date="0d": 设置可选的最早日期。0d 表示今天,-1d 表示昨天。
  • data-date-end-date="0d": 设置可选的最晚日期。

事件处理 (如日期范围选择):

在示例中,我们通过 on('changeDate', function(selected) { ... }) 事件来实现日期范围的联动。

  • 当“开始日期”改变时,获取选中的日期,然后调用 $('#end-date').datepicker('setStartDate', startDate) 来动态设置“结束日期”选择器的最小可选日期。
  • 同理,当“结束日期”改变时,设置“开始日期”选择器的最大可选日期。

更多优秀的 Bootstrap 日历插件

除了 Bootstrap Datepicker,还有其他一些非常棒的插件,各有侧重:

插件名称 特点 适用场景
Bootstrap Datepicker 最经典、最轻量,专注于日期选择,配置简单,与 Bootstrap 样式融合度高。 大多数常规的日期选择需求,如出生日期、活动日期等。
FullCalendar 功能最强大、最专业,是一个完整的日历视图库,支持月、周、日、日程列表等多种视图,支持事件拖拽、外部数据源等。 需要展示和管理复杂事件的场景,如项目日程、会议安排、个人待办事项。
Bootstrap Calendar 视图丰富,提供月、周、日、列表四种视图,并带有搜索和事件过滤功能。 需要类似 FullCalendar 的多视图功能,但希望找一个更轻量或特定实现的解决方案。
Eonasdan Bootstrap DateTimePicker 功能全面,是 Datepicker 的一个分支,功能更强大,支持时间选择、内联模式等。 强烈推荐,如果你不仅需要日期,还需要时间选择,这个是最佳选择。
  • 如果只是需要一个简单的日期选择框,直接使用 Bootstrap Datepicker 即可,它最简单、最符合 Bootstrap 的设计哲学。
  • 如果需要管理事件、拖拽安排,选择 FullCalendar
  • 如果需要同时选择日期和时间,选择 Eonasdan Bootstrap DateTimePicker
bootstrap自带日历的网页模板
(图片来源网络,侵删)