項目中經常會用到起止時間,如下圖:
需要引用以下幾個文件:
<link href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" /> <link href="~/lib/bootstrap/dist/css/bootstrap-datetimepicker.min.css" rel="stylesheet" /> <script src="~/lib/bootstrap/dist/js/bootstrap-datetimepicker.js"></script> <script src="~/lib/bootstrap/dist/js/bootstrap-datetimepicker.zh-CN.js"></script>
然后,代碼中需要初始化一下:

$("#sDatePicker").datetimepicker( { language: 'zh-CN', autoclose: true,//選中之后自動隱藏日期選擇框 clearBtn: false,//清除按鈕 todayBtn: true,//今日按鈕 format: 'yyyy-mm-dd', startView: 2, minView: 2, todayHighlight: false, forceParse: true, endDate: new Date() }).on('changeDate', function (ev) { if (ev.date) { $("#eDatePicker").datetimepicker('setStartDate', new Date(ev.date.valueOf())) } else { $("#eDatePicker").datetimepicker('setStartDate', null); } }); $("#eDatePicker").datetimepicker( { language: 'zh-CN', autoclose: true,//選中之后自動隱藏日期選擇框 clearBtn: false,//清除按鈕 todayBtn: true,//今日按鈕 format: 'yyyy-mm-dd', startView: 2, minView: 2, todayHighlight: false, forceParse: true }).on('changeDate', function (ev) { if (ev.date) { $("#sDatePicker").datetimepicker('setEndDate', new Date(ev.date.valueOf())) } else { $("#sDatePicker").datetimepicker('setEndDate', new Date()); } });
搞定,而且也限制了起始時間不大於今天,且不大於結束時間。結束時間不小於起始時間。
然而,在將選擇的日期刪除之后,總是回不到初始狀態 ,比如,結束時間選擇 3月5號,那么開始時間只能選3月5號以前,當刪除了結束時間(或者點擊清空/重置 按鈕清除已選時間),發現,開始時間依然是只能選擇3月5號之前的。解決 方法如下:
修改源碼bootstrap-datetimepicker.js,如下片段:

setStartDate: function (startDate) { //this.startDate = startDate || this.startDate; //傳入空或null時,恢復默認(為解決清空日期后,時間限制恢復不到默認值,例如開始時間仍被限制小於上一次的結束時間) this.startDate = startDate || new Date(-8639968443048000); if (this.startDate.valueOf() !== 8639968443048000) { this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone); } this.update(); this.updateNavArrows(); }, setEndDate: function (endDate) { //this.endDate = endDate || this.endDate; //傳入空或null時,恢復默認(為解決清空日期后,時間限制恢復不到默認值,例如開始時間仍被限制小於上一次的結束時間) this.endDate = endDate || new Date(8639968443048000); if (this.endDate.valueOf() !== 8639968443048000) { this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone); } this.update(); this.updateNavArrows(); },
然后 ,在清空/重置 事件中,增加以下代碼:
$("#sDatePicker").datetimepicker('setEndDate', new Date()); $("#eDatePicker").datetimepicker('setStartDate', null);
ok,搞定了;
