说一说bootstrap-datepicker项目不大不小的坑

最近接手了一个Bootstrap的项目,因为要用到一个日期组件,所以放狗一搜,就有了bootstrap-datepicker这个控件。使用起来倒是也不难,但是差点被坑了一下。 什么情况呢?该项目需要日期控件控制用户的日期选择段,且要控制这一段时间内春节那几天不能被选择。该控件提供了: startDate,endDate来控制日期段的起始日 datesDisabled来控制某几日不能被选择 OK。写代码,测试都通过,没有问题,上线。但是上线第一日早晨8点之前在做最后一次测试时,测试人员发现春节不能选择的那几天,莫名其妙的被推后了一天。即本来是7号-13号不能选择,但是却变成了6号-13号不能被选择。于是做了一番研究,发现问题在于这几个类在解析时,控件内部使用了不同的时区解析策略: 对于startDate,endDate,它使用local timezone去比较哪几天不能被选择,这很正常 对于datesDisabled,控件却使用了UTC timezone去比较哪几天不能被选择。这就导致,比如说中国,在东八区,那么早上8点之前,我们已经是4号了,但是UTC时间还是3号。这就造成了一天的差异。 目前的解决方案是各使用不同的初始化值: 对于startDate,endDate,就使用new Date(2016, 0,…