Bootstrap时间控件 datetimepicker

一、slice(0,-1)报错

转载自http://blog.chinaunix.net/uid-20332519-id-5733546.html

Bootstrap datetimepicker有多个版本,官方的链接中,只是datepicker,没有时间的选择,原版的datetimepicker也不再更新,不能用新版的jquery。
现在https://github.com/Eonasdan/bootstrap-datetimepicker这个版本最完善,但是一大堆依赖很头疼;
https://github.com/smalot/bootstrap-datetimepicker还不错,比较轻巧,但是用起来报错。

报错:

  1. TypeError:
  2. ...d"?false:k.title;this.defaultTimeZone=(new Date()).toString().split("(

原文:

  1. this.defaultTimeZone=(newDate()).toString().split("(")[1].slice(0,-1);
意思为:先取得Date对象,然后再字符串化,再用(来分隔字符串,然后取其中的第二个,再从右向左取第一项,也就是取时区项。
但在Firefox中,字符串化的结果为:“Wed May 25 2016 16:07:14 GMT+0800”,没有括号,导致错误。

更为通用的,时区可以用getTimezoneOffset()来获取,这个结果的单位是分钟,所以要除以60才可以:
修改为:
  1. this.defaultTimeZone='GMT '+(newDate()).getTimezoneOffset()/60

修改后就可以正常使用了。



另外还有一个字体错误,如果使用了fa字体,则会报错,系统中会检测不到fontAwesome,所以可以直接赋这个变量为true:

  1. this.fontAwesome=k.fontAwesome||this.element.data("font-awesome")||false;
改为:
  1. this.fontAwesome=true

二、添加bootstrap-datetimepicker日期控件的开始日期和结束日期之间的限制
转载自http://my.oschina.net/xiaoxiangdaizi/blog/485189

作为一个日期选择控件,当涉及到同时选择开始日期和结束日期时,两者的日期时间值之间是存在一定的约束条件的,即保证任何情况下开始日期要小于结束日期。

控件效果如下:

默认情况下,开始日期和结束日期之间是不存在关联的,需要我们进行设置。

//日期时间选择器
$("#datetimeStart").datetimepicker({
    format: "yyyy-mm-dd",
    autoclose: true,
    minView: "month",
    maxView: "decade",
    todayBtn: true,
    pickerPosition: "bottom-left"
}).on("click",function(ev){
    $("#datetimeStart").datetimepicker("setEndDate", $("#datetimeEnd").val());
});
$("#datetimeEnd").datetimepicker({
    format: "yyyy-mm-dd",
    autoclose: true,
    minView: "month",
    maxView: "decade",
    todayBtn: true,
    pickerPosition: "bottom-left"
}).on("click", function (ev) {
    $("#datetimeEnd").datetimepicker("setStartDate", $("#datetimeStart").val());
});



你可能感兴趣的:(Bootstrap时间控件 datetimepicker)