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

(图片来源网络,侵删)
- 推荐组件:为什么推荐
Bootstrap Datepicker。 - 完整代码模板:一个可以直接复制使用的、包含日期选择器和范围选择的网页模板。
- 功能详解:代码中各个部分的解释。
- 更多选择:除了 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>
功能详解
关键步骤分解:
-
引入 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: 中文语言包,让日历显示中文。非常重要!
-
HTML 结构:
(图片来源网络,侵删)- 将日期选择器放在一个带有
.input-group的div容器中。 - 这个
div需要一个唯一的id(如id="datepicker1"),方便 JS 初始化。 - 在
div内部,<input type="text">用于接收用户选择的日期。 <span class="input-group-text">用于添加日历图标,提升用户体验。
- 将日期选择器放在一个带有
-
初始化 (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。

(图片来源网络,侵删)
