js 推断一组日期是否是连续的简洁实例__第1页
js 推断一组日期是否是连续的简洁实例__第2页
js 推断一组日期是否是连续的简洁实例__第3页
js 推断一组日期是否是连续的简洁实例__第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、js 推断一组日期是否是连续的简洁实例_ 下面我就为大家带来一篇js 推断一组日期是否是连续的简洁实例。我觉得挺不错的,现在就分享给大家,也给大家做个参考。 问题需求 给定5个相同格式的日期,怎么推断是否是连续5天呢? 我当时第一反应 getDay() 后排序,然后前后对比即可。 但是细想,完全不对,比如本周一下周二,这样也会误判。 而且不仅仅这样的问题,还要跨月,跨年,闰月等问题。 然后就有了下面的代码。 让时间戳抹平一切吧 为了不纠结这些问题,我想到了时间戳,这货就可以完全忽视上述问题了,只要处理时间戳,最终比较即可。 然后我给了如下代码: let days = 2021-02-28, 2

2、021-02-29, / 闰月 2021-03-01, / 跨月 2021-03-02, 2021-03-03, / 先排序,然后转时间戳 let _days = days.sort().map(d, i) = let dt = new Date(d) dt.setDate(dt.getDate() + 4 - i) / 处理为相同日期 return +dt ) / 比较时间戳是否全都 console.log( _days0 = _days1 _days0 = _days2 _days0 = _days3 _days0 = _days4 ) ok 一切问题都解决掉了,跨年,跨月,闰月也都无所谓

3、了。 通用函数封装 上述代码还是有点缺陷的,由于时分秒没有处理,假如有时分秒,也要先抹去。 let days = 2021-02-28 12:00:00, 2021-02-29 12:00:01, / 闰月 2021-03-01 12:00:02, / 跨月 2021-03-02 12:00:03, 2021-03-03 12:00:04, 2021-03-04 12:00:04, console.log(continueDays(days) function continueDays(arr_days) / 先排序,然后转时间戳 let days = arr_days.sort().map(

4、d, i) = let dt = new Date(d) dt.setDate(dt.getDate() + 4 - i) / 处理为相同日期 / 抹去 时 分 秒 毫秒 dt.setHours(0) dt.setMinutes(0) dt.setSeconds(0) dt.setMilliseconds(0) return +dt ) let ret = true days.forEach(d = if (days0 != d) ret = false ) return ret 这个函数只是改动了2个地方,抹去 时 分 秒 毫秒 和 循环比较,其他都一样。 小结 js 处理时间还是特别简洁的,比如写个日期插件,其实借助 Date 特别简单实现,但实现你要了解 Date 的 api 才行。 当然要说简洁,还是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论