这是群里一朋友问的问题,当时我说判断下 day 是否相邻即可,后来细想,发现完全不对。
问题需求
给定5个相同格式的日期,怎么判断是否是连续5天呢?
我当时第一反应 getDay()
后排序,然后前后对比即可。。
但是细想,完全不对,比如本周一下周二,这样也会误判。
而且不仅仅这样的问题,还要跨月,跨年,闰月等问题。
然后就有了下面的代码。
让时间戳抹平一切吧
为了不纠结这些问题,我想到了时间戳,这货就可以完全忽略上述问题了,只要处理时间戳,最后比较即可。
然后我给了如下代码:
1 | let days = [ |
ok 一切问题都解决掉了,跨年,跨月,闰月也都无所谓了。
通用函数封装
上述代码还是有点缺陷的,因为时分秒没有处理,如果有时分秒,也要先抹去。
1 | let days = [ |
这个函数只是改动了2个地方,抹去 时 分 秒 毫秒 和 循环比较,其他都一样。
小结
js 处理时间还是非常简单的,比如写个日期插件,其实借助 Date
非常容易实现,但实现你要了解 Date
的 api 才行。
当然要说简单,还是 php 最简单,那简直逆天。