分享说明:

项目中要使用日期时间范围选择对数据进行筛选;精确到年月日 时分秒;起初,使用了layui的时间日期选择插件;但是在IIE8第一次点击会报设置格式错误;研究了很久没解决,但能确定不是layui的问题;因为自己写的demo可以在IE8运行;只是在我的项目环境下某些代码冲突了;所以换用了bootstrap插件daterangepicker;看了很多资料;结合官网了文档;基本算是搞定了;把我的总结代码分享给大家;希望对使用daterangepicker插件的初学者有帮助。
总结分为四个部分:日期范围选择实现,日期时间选择,使用两个单日历实现范围选择,使用div代替input实现日期时间选择;下面是代码
css 代码
<style type="text/css">
body,
ul,
p,
h3,
img,
input {
margin: 0;
padding: 0;
}
.box {
display: block;
text-align: center;
margin: 20px auto;
}
input {
width: 400px;
height: 40px;
}
label {
display: inline-block;
width: 90px;
line-height: 40px;
height: 40px;
margin: 0;
font-weight: normal;
font-family: "宋体";
background-color: #ddd;
}
.divDateSelect{
width: 185px;
height: 50px;
line-height: 50px;
margin:10px auto;
border:2px solid #ddd;
border-radius: 5px;
}
</style>
html代码:
<!-- 日期时间范围选择代码 --> <div class="box"> <label for="datePicker">双日历</label> <input type="text" name="datePicker" class="datePicker" id="datePicker"> </div> <!-- 日期时间选择代码 --> <div class="box"> <label for="singledatePicker">单日历</label> <input type="text" name="singledatePicker" class="singledatePicker" id="singledatePicker"> </div> <!-- 两个单日历实现日期时间范围选择代码 --> <div class="box"> <label for="from">从</label> <input type="text" name="from" class="from" id="from"> <label for="to">到</label> <input type="text" name="to" class="to" id="to"> </div> <!-- 不使用input,用div实现代码 --> <div class="divDateSelect" id="divDateSelect"> <i class="glyphicon glyphicon-calendar fa fa-calendar"></i> <span></span> <b class="caret"></b> </div>
js 代码,按照上下顺序对应html四部分
$('input[name="datePicker"]').daterangepicker({
timePicker: true, //显示时间
timePicker24Hour: true, //时间制
timePickerSeconds: true, //时间显示到秒
startDate: moment().hours(0).minutes(0).seconds(0), //设置开始日期
endDate: moment(new Date()), //设置结束器日期
maxDate: moment(new Date()), //设置最大日期
"opens": "center",
ranges: {
// '今天': [moment(), moment()],
'昨天': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
'上周': [moment().subtract(6, 'days'), moment()],
'前30天': [moment().subtract(29, 'days'), moment()],
'本月': [moment().startOf('month'), moment().endOf('month')],
'上月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
},
showWeekNumbers: true,
locale: {
format: "YYYY-MM-DD HH:mm:ss", //设置显示格式
applyLabel: '确定', //确定按钮文本
cancelLabel: '取消', //取消按钮文本
customRangeLabel: '自定义',
daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'
],
firstDay: 1
},
}, function(start, end, label) {
timeRangeChange = [start.format('YYYY-MM-DD HH:mm:ss'), end.format('YYYY-MM-DD HH:mm:ss')];
console.log(timeRangeChange);
});
$('input[name="singledatePicker"]').daterangepicker({
"autoApply": true, //选择日期后自动提交;只有在不显示时间的时候起作用timePicker:false
singleDatePicker: true, //单日历
showDropdowns: true, //年月份下拉框
timePicker: true, //显示时间
timePicker24Hour: true, //时间制
timePickerSeconds: true, //时间显示到秒
startDate: moment().hours(0).minutes(0).seconds(0), //设置开始日期
maxDate: moment(new Date()), //设置最大日期
"opens": "center",
showWeekNumbers: true,
locale: {
format: "YYYY-MM-DD HH:mm:ss", //设置显示格式
applyLabel: '确定', //确定按钮文本
cancelLabel: '取消', //取消按钮文本
daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'
],
firstDay: 1
},
}, function(start) {
console.log(start.format('YYYY-MM-DD HH:mm:ss'));
});
var minDate = null;
var max = null;
function fromDate(maxDate) {
if(!maxDate){
max = moment(new Date())
}else{
max = maxDate;
}
$('input[name="from"]').daterangepicker({
"autoApply": true, //选择日期后自动提交;只有在不显示时间的时候起作用timePicker:false
singleDatePicker: true, //单日历
showDropdowns: true, //年月份下拉框
timePicker: true, //显示时间
timePicker24Hour: true, //时间制
timePickerSeconds: true, //时间显示到秒
// startDate: moment().hours(0).minutes(0).seconds(0), //设置开始日期
maxDate: max , //设置最大日期
"opens": "center",
showWeekNumbers: true,
locale: {
format: "YYYY-MM-DD HH:mm:ss", //设置显示格式
applyLabel: '确定', //确定按钮文本
cancelLabel: '取消', //取消按钮文本
daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'
],
firstDay: 1
},
}, function(s) {
toDate(s);
});
}
fromDate()
function toDate(minDate) {
$('input[name="to"]').daterangepicker({
"autoApply": true, //选择日期后自动提交;只有在不显示时间的时候起作用timePicker:false
singleDatePicker: true, //单日历
showDropdowns: true, //年月份下拉框
timePicker: true, //显示时间
timePicker24Hour: true, //时间制
timePickerSeconds: true, //时间显示到秒
// startDate: moment().hours(0).minutes(0).seconds(0), //设置开始日期
maxDate: moment(new Date()), //设置最大日期
minDate: minDate,
"opens": "center",
showWeekNumbers: true,
locale: {
format: "YYYY-MM-DD HH:mm:ss", //设置显示格式
applyLabel: '确定', //确定按钮文本
cancelLabel: '取消', //取消按钮文本
daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'
],
firstDay: 1
},
}, function(s) {
fromDate(s)
});
}
toDate();
var start = moment(new Date());
function cb(start) {
$('#divDateSelect span').html(start.format('YYYY-MM-DD HH:mm:ss'));
}
$('#divDateSelect').daterangepicker({
"autoApply": true, //选择日期后自动提交;只有在不显示时间的时候起作用timePicker:false
singleDatePicker: true, //单日历
showDropdowns: true, //年月份下拉框
// timePicker: true, //显示时间
timePicker24Hour: true, //时间制
timePickerSeconds: true, //时间显示到秒
startDate: moment().hours(0).minutes(0).seconds(0), //设置开始日期
maxDate: moment(new Date()), //设置最大日期
"opens": "center",
showWeekNumbers: true,
locale: {
format: "YYYY-MM-DD HH:mm:ss", //设置显示格式
applyLabel: '确定', //确定按钮文本
cancelLabel: '取消', //取消按钮文本
daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],
monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',
'七月', '八月', '九月', '十月', '十一月', '十二月'
],
firstDay: 1
},
}, cb);
cb(start);
效果图:
第一部分:
第二部分:
第三部分就是两个第二部分组实现第一部分的效果;原理为在确定好开始日期后;设置选择结束日期日历的最小选择日期;在结束日期选中后;设置开始日期的最大选择日期;
第四部分:
关键选项的含义已经在代码中注释了;引入文件css包括bootstrap的css文件;daterangepicker的css文件;js包括jquery的js;bootstrap的js;daterangepicker的js以及moment.js;
备注:
1 moment.js使用了数组的indexOf()方法;但IE8不支持;需要引入兼容代码;代码地址https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf 在polyfill下;
2 在IE8下;双日历的范围选择出现连个日历竖直排列问题;解决方法为给存放两个日历的盒子设置固定的宽度,足以放下两个日历的div;再把两个日历的div设置float:left即可;
3 官网地址;选项设置: http://www.daterangepicker.com/#options
例子: http://www.daterangepicker.com/#examples
4 希望本文能够帮助初识daterangepicker的朋友.
以上这篇日期时间范围选择插件:daterangepicker使用总结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# daterangepicker插件
# Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
# bootstrap daterangepicker双日历时间段选择控件详解
# jQuery dateRangePicker插件使用方法详解
# 基于daterangepicker日历插件使用参数注意的问题
# Jquery日期选择datepicker插件用法实例分析
# 浅谈Bootstrap的DatePicker日期范围选择
# Bootstrap datepicker日期选择器插件使用详解
# 给大家
# 下拉框
# 会报
# 第一部分
# 官网
# 使用了
# 看了
# 用了
# 希望能
# 自定义
# 不支持
# 上月
# 这篇
# 第二部
# 必看
# 解决方法
# 再把
# 小编
# 中要
# 连个
相关文章:
C++如何编写函数模板?(泛型编程入门)
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
网站设计制作企业有哪些,抖音官网主页怎么设置?
如何有效防御Web建站篡改攻击?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
大型企业网站制作流程,做网站需要注册公司吗?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
网站制作壁纸教程视频,电脑壁纸网站?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
黑客如何通过漏洞一步步攻陷网站服务器?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
如何通过云梦建站系统实现SEO快速优化?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
如何用5美元大硬盘VPS安全高效搭建个人网站?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何通过NAT技术实现内网高效建站?
如何快速配置高效服务器建站软件?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
实例解析angularjs的filter过滤器
,有什么在线背英语单词效率比较高的网站?
,石家庄四十八中学官网?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
建站之星如何实现网站加密操作?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何获取上海专业网站定制建站电话?
北京网站制作的公司有哪些,北京白云观官方网站?
如何用AWS免费套餐快速搭建高效网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
大连网站设计制作招聘信息,大连投诉网站有哪些?
如何通过WDCP绑定主域名及创建子域名站点?
香港服务器租用每月最低只需15元?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
网站制作免费,什么网站能看正片电影?
上海网站制作开发公司,上海买房比较好的网站有哪些?
如何使用Golang table-driven基准测试_多组数据测量函数效率
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何用虚拟主机快速搭建网站?详细步骤解析
如何挑选优质建站一级代理提升网站排名?
高端云建站费用究竟需要多少预算?
智能起名网站制作软件有哪些,制作logo的软件?
建站主机无法访问?如何排查域名与服务器问题
建站之星后台密码如何安全设置与找回?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
太原网站制作公司有哪些,网约车营运证查询官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。