首页 > web前端 > js教程 > 正文

关于日期时间范围选择插件:daterangepicker使用总结

小云云
发布: 2017-12-29 09:24:41
原创
4753人浏览过

项目中要使用日期时间范围选择对数据进行筛选;精确到年月日 时分秒;起初,使用了layui的时间日期选择插件;但是在iie8第一次点击会报设置格式错误;研究了很久没解决,但能确定不是layui的问题;因为自己写的demo可以在ie8运行;只是在我的项目环境下某些代码冲突了;所以换用了bootstrap插件daterangepicker;看了很多资料;结合官网了文档;基本算是搞定了;把我的总结代码分享给大家;希望对使用daterangepicker插件的初学者有帮助。

总结分为四个部分:日期范围选择实现,日期时间选择,使用两个单日历实现范围选择,使用p代替input实现日期时间选择;下面是代码

css 代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

<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;

 }

 .pDateSelect{

  width: 185px;

  height: 50px;

  line-height: 50px;

  margin:10px auto;

  border:2px solid #ddd;

  border-radius: 5px;

 }

 </style>

登录后复制

html代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<!-- 日期时间范围选择代码 -->

 <p class="box">

  <label for="datePicker">双日历</label>

  <input type="text" name="datePicker" class="datePicker" id="datePicker">

 </p>

 <!-- 日期时间选择代码 -->

 <p class="box">

  <label for="singledatePicker">单日历</label>

  <input type="text" name="singledatePicker" class="singledatePicker" id="singledatePicker">

 </p>

 <!-- 两个单日历实现日期时间范围选择代码 -->

 <p 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">

 </p>

 <!-- 不使用input,用p实现代码 -->

 <p class="pDateSelect" id="pDateSelect">

   <i class="glyphicon glyphicon-calendar fa fa-calendar"></i>

  <span></span> <b class="caret"></b>

 </p>

登录后复制

js 代码,按照上下顺序对应html四部分

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

$('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);

 });

登录后复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

$('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'));

 });

登录后复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

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();

登录后复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

var start = moment(new Date());

 function cb(start) {

  $('#pDateSelect span').html(start.format('YYYY-MM-DD HH:mm:ss'));

 }

 $('#pDateSelect').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下;双日历的范围选择出现连个日历竖直排列问题;解决方法为给存放两个日历的盒子设置固定的宽度,足以放下两个日历的p;再把两个日历的p设置float:left即可;

3 官网地址;选项设置: http://www.daterangepicker.com/#options  

例子: http://www.daterangepicker.com/#examples

相关推荐:

详解picker日期和时间选择器

vue.js实现仿原生ios时间选择组件开发经验

php-datepicker时间选择器,sql参数查询

以上就是关于日期时间范围选择插件:daterangepicker使用总结的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号