bootstrap-datepicker日期控件

本文档详细介绍了如何使用bootstrap-datepicker日期控件,包括控件的引入、日期范围的公共方法如获取当前日期前后几天和月份,以及日期控件的初始化设置,如时间显示到日、月、年的配置,还涵盖了时间点多选功能和日期控件的重置操作。

目录

控件引入

日期范围公用方法

获取当前日期的前/后几天

获取当前月份的前/后几个月

日期控件初始化

时间显示到日

时间显示到月

时间显示到年

 时间点多选(日、月、年)

日期控件重置


 

控件引入

需要引入的文件:

datepicker/bootstrap-datepicker.css
datepicker/bootstrap-datepicker.js
datepicker/locales/bootstrap-datepicker.zh-CN.js (如果需要显示中文的话引用此文件)

日期范围公用方法

通常日期范围显示近几天、近几个月或近几年,其中近几天、近几个月可以写为一个公用方法

获取当前日期的前/后几天

/**
 * 获取当前日期的前N天
 * @param addDayCount 前N天(-N) 后N天(N)
 * @returns {String} yyyy-MM-dd
 */
function getDateStr(addDayCount) {   
   var dd = new Date();  
   dd.setDate(dd.getDate()+addDayCount);//获取AddDayCount天后的日期  
   var y = dd.getFullYear();   
   var m = (dd.getMonth()+1)<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1);//获取当前月份的日期,不足10补0  
   var d = dd.getDate()<10?"0"+dd.getDate():dd.getDate();//获取当前几号,不足10补0  
   return y+"-"+m+"-"+d;   
}

获取当前月份的前/后几个月

/**
 * 获取当前月份的前N个月
 * @param addMonthCount 前N个月(-N) 后N个月(N)
 * @returns {String} yyyy-MM
 */
function getMonthStr(addMonthCount){
	var dd = new Date();  
    dd.setMonth(dd.getMonth()+addMonthCount);//获取AddDayCount天后的日期  
    var y = dd.getFullYear();   
    var m = (dd.getMonth()+1)<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1);//获取当前月份的日期,不足10补0  
    return y+"-"+m;
}

日期控件初始化

在项目中用到的比较多,我就把它提取为公用方法,只需要传入对应名称、显示格式、显示视图即可,为方便管理,我统一将HTML对应的id写为DayCalendar、MonthCalendar、YearCalendar,在传入名称时,直接传Day、Month、Year即可。

同时在项目中,也用到了datepicker时间点多选,也一同加在公用方法中,id写为multiDate_Day、multiDate_Month、multiDate_Year

/**
 * 时间格式化
 */
function dateFormatFunc(dateType) {
    let idName,format,view;
    let endTime = new Date();
    for (let i = 0; i < dateType.length; i++) {
        idName = "#" + dateType[i].name + "Calendar";
        format = dateType[i].format;
        view = dateType[i].view;
        if ($(idName +' .startTime').length > 0) {
            // 时间范围-开始时间
            $(idName +' .startTime').datepicker({
                format:format,
                language: 'zh-CN',
                weekStart: 1,
                autoclose: true,
                startView: view,
                minViewMode:view,
                endDate: endTime,
            }).on('changeDate', function(ev){
                idName = "#" + $(ev.currentTarget).parent().attr("id");
                $(idName +' .endTime').datepicker('setStartDate',ev.date);
            });
            // 时间范围-结束时间
            $(idName +' .endTime').datepicker({
                format:format,
                language: 'zh-CN',
                weekStart: 1,
                autoclose: true,
                startView: view,
                minViewMode:view,
                endDate: endTime,
            }).on('changeDate', function(ev){
                idName = "#" + $(ev.currentTarget).parent().attr("id");
                $(idName +' .startTime').datepicker('setEndDate',ev.date);
            });
        }
        // 时间点多选
        if ($("#multiDate_" + dateType[i].name).length > 0) {
            // 时间点 多选
            $("#multiDate_" + dateType[i].name).datepicker({
                format:format,
                language: 'zh-CN',
                weekStart: 1,
                startView: view,
                minViewMode:view,
                endDate: endTime,
                multidate: 5,
                multidateSeparator: ';',
            });
        }
    }
}

时间显示到日

日期范围显示近7天

<div class="input-group" id="DayCalendar">
    <input size="16" type="text" value="" readonly class="startTime form-control" >
    <span class="time-link">&nbsp;--&nbsp;</span>
    <input size="16" type="text" value="" readonly class="endTime form-control" >
</div>

 设置日期控件setStartDate、setEndDate,也可以写在公用方法中,调用的时候传入即可

// 时间范围默认近7天
$("#DayCalendar .startTime").val(getDateStr(-6));
$("#DayCalendar .endTime").val(getDateStr(0));

// 调用日期控件初始化方法
let dateType = [{
    name: 'Day',
    format: "yyyy-mm-dd",
    view: 0
}];
dateFormatFunc(dateType);

// 设置控件的setStartDate、setEndDate
$("#DayCalendar .endTime").datepicker('setStartDate',getDateStr(-6));
$("#DayCalendar .startTime").datepicker('setEndDate',getDateStr(0));

时间显示到月

日期范围显示近4个月

<div class="input-group" id="MonthCalendar">
    <input size="16" type="text" value="" readonly class="startTime form-control" >
    <span class="time-link">&nbsp;--&nbsp;</span>
    <input size="16" type="text" value="" readonly class="endTime form-control" >
</div>
// 时间范围默认近4个月
$("#MonthCalendar .startTime").val(getMonthStr(-3));
$("#MonthCalendar .endTime").val(getMonthStr(0));

// 调用日期控件初始化方法
let dateType = [{
    name: 'Month',
    format: "yyyy-mm",
    view: 1
}];
dateFormatFunc(dateType);

// 设置控件的setStartDate、setEndDate
$("#MonthCalendar .endTime").datepicker('setStartDate',getMonthStr(-3));
$("#MonthCalendar .startTime").datepicker('setEndDate',getMonthStr(0));

时间显示到年

日期范围显示近3年

<div class="input-group" id="YearCalendar">
    <input size="16" type="text" value="" readonly class="startTime form-control" >
    <span class="time-link">&nbsp;--&nbsp;</span>
    <input size="16" type="text" value="" readonly class="endTime form-control" >
</div>
var date = new Date();
// 时间范围默认近3年
$("#YearCalendar .startTime").val(date.getFullYear()-2);
$("#YearCalendar .endTime").val(date.getFullYear());

// 调用日期控件初始化方法
let dateType = [{
    name: 'Year',
    format: "yyyy",
    view: 2
}];
dateFormatFunc(dateType);

// 设置控件的setStartDate、setEndDate
$("#YearCalendar .endTime").datepicker('setStartDate',(date.getFullYear()-2).toString());
$("#YearCalendar .startTime").datepicker('setEndDate',date.getFullYear().toString());

 

 时间点多选(日、月、年)

<input size="16" type="text" value="" readonly id="multiDate_Day" class="multiDate form-control" >
<input size="16" type="text" value="" readonly id="multiDate_Month" class="multiDate form-control" >
<input size="16" type="text" value="" readonly id="multiDate_Year" class="multiDate form-control" >
let dateType = [{
    name: 'Day',
    format: "yyyy-mm-dd",
    view: 0
},{
    name: 'Month',
    format: "yyyy-mm",
    view: 1
},{
    name: 'Year',
    format: "yyyy",
    view: 2
}];
dateFormatFunc(dateType);

日期控件重置

日期重置input置空,并且需要重新设置setStartDate、setEndDate

$(".startTime, .endTime").val("");
let endTime = new Date();
endTime.setDate(endTime.getDate());
$(".startTime").datepicker('setEndDate',endTime);
$(".endTime").datepicker('setStartDate',null);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值