时间戳怪事. 已经想到解决办法

最近在写一个酒店客房预订系统,通过时间戳来判断该日期被预订了没,然后前端是这样的这里写图片描述
前端是自动生成最近6个月的日历表,格式如上图,我通过获取date-date里的时间转换成时间戳,
但是制作的时候 7 8 9 月的预订判断一直很正常 但是涉及到10月以后的 总是出错
我试过了用获取6个月的全部日期的时间戳(已经被预订的日期会变成灰色datedate属性会消失变成disable,所以完整的日历时间戳数组里是不会有的)
这是获取时间戳的函数
这里写图片描述
我就是通过这个方式来对比
原来的思路是
1.拿到6个月 全部的日子转换成 时间戳 存成一个数组(已经被预订的日期会变成灰色不会取到)
2拿到预订开始跟结束的时间 算出间隔每一天的时间戳 存成一个数组
比如预订3天
设一个计数count
3.遍历 4个月时间戳 里面在遍历 预订时间
如果预订的每一天都在 4个月的数组里 找到了自己 就把count+1
如果count==预订的天数也就是意味着 预订的范围区间没被其他人 预订掉
结果一旦涉及10月份以后的 都会出错..count 有时候都是0

遍历出全部的时间戳 数量也对…

后来换了一种思路

1拿到全部日子的时间戳datearr
2.拿到预订入住跟离开的区间每一天的时间戳
3.

var $flag=false;
         for(var i=0;i<$dataarray.length;i++){
              if($alldate.indexOf($dataarray[i])<=-1){
                  $flag=true;
              }
          }

结果也是到了10月份之后出了错;

实在无解

最后只好5天5天的测试到什么位置出错的 最终终于找到了罪魁祸首 2017-10-10
不知道是什么原因都是同样格式转过来的 2017-10-10之前的时间戳成时间戳在转回来的时间是2017-10-09 00:00:00 ,而一到2017-10-10之后全部变成了 2017-10-10 08:00:00
这样的情况下 在怎么对比 肯定都是找不到的…原因是找到了 但是为什么会这样?有没有高玩解释下?同样格式转换成时间戳 为什么2017-10-10成了 0:00:00 跟8:00:00的分界线??

还有一个关键点
我发现问题的另外一个关键点 就是 当月份变成2位数的时候 日期是单位数 时间戳的时间为0点 单日期变成了2位数的数的时候 时间戳变成了 8点。。10 11 12月都这样

10月1号-10月9号 转换出来的是0点
10月10号-10月31号 转换出来的是8点
11月1号-11月9号 转换出来的是0点
11月10号-11月30号 转换出来的是8点
12月1号-12月9号 转换出来的是0点
12月10号-12月31号 转换出来的是8点

什么原理???注意 是统一转换的时候的情况下

找到解决办法了.
原因是字符串单位数跟双位数的问题. 只要把比如2017-1-1 单位数上全部补上0 得到的时间戳就是 集体8点的 然后在减去28800 就可以得到统一的 0点的时间戳了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值