时间间隔判断思路

问题:很多时候需要和时间和时间间隔 进行判断,比如说两个时间范围内的 天\周\月\季\年数,当然,通常来说比较有疑问的是 周和季度的判断;


现象:由于给出的时间不一定是整数周(季度)开始的临界点,所以就出现了周数,季度数 结果的偏差;


假设给出的时间段为 timeStart, timeEnd,以周为例子

当然首先需要明确自己的需求,到底是timeStart到下一个周的这段时间 没有构成一周(即,不满7天)这种算不算一周? 至于结束向前不满一周的情况 暂时不要考虑。。


明确了之后,接着走,,

那么就可以明确了这种情况 :  给出 14天,星期的分布是   : 3天  7天 4天 。

                                                      如果 笼统的用  天数/7 = 间隔周数  2 ,肯定有点片面了;

                                                      如果 开始不满一周 算的话,那么  是2;

                                                      如果 开始不满一周不算 ,那么 答案是1;


                                                     给出 14天,星期的分布是   : 3天  7天 3天 。

                                                      如果 笼统的用  天数/7 = 间隔周数  1

                                                      如果 开始不满一周 算的话,那么  是2;

                                                      如果 开始不满一周不算 ,那么 答案是1;

以下开始建模。。。。。

对比上面 的话估计就知道问题的所在了,就是需要确定timeStart向前一周,这段时间是否是一周 把它先确定了;通过转换日期可以知道 这一天处于一周的第几天,当然了,需要考虑中国和其他国家星期开始的位置不一样,中国默认的是星期一为第一天,而西方国建默认是周日为星期开始的第一天;

在此假设 从星期天 开始,用 0 -6 ,便是一周;这样的话,如果是以星期一作为一周的开始的话 那么这个偏移值 pos = 1;

那么假设timeEnd - timeStart 得到的天数 days;


假设timeStart距离下一周的天数为 N;(N值 =( 7 -  当前日期所在星期数 +  pos)% 7  )

所以间隔周数 WeekInterval = (days - N) / 7   + (0或者1) ; 其中0或者1是 判断 不满一周 是否算一周,

如果结束时间timeENd向前一周 间隔天数 不满7天,不算那就此结束了。


如果要算,那么问题又来了,把 timeEnd距离上一周的天数计算出来,假设为 N2 (N2 = timeEnd所在的星期数 - pos)

那么最后的式子为 WeekInterval = (days - N - N2 ) / 7   + (开始时间的 0或者1) + (结束时间的 0或者1)  ; (注: 0或者1,取决于 开始时间或者结束时间不满一周是否算一周)。


就到这里吧。。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值