温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

js怎么判断日期天数

发布时间:2022-01-05 16:02:06 来源:亿速云 阅读:261 作者:iii 栏目:大数据

本篇内容介绍了“js怎么判断日期天数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

题目:给定5个相同格式的日期,怎么判断是否是连续的5天呢?

数据如下:

let days = [  '2016-02-28',  '2016-02-29', // 闰月  '2016-03-01', // 跨月  '2016-03-02',  '2016-03-03',]

看到这个题目,我瞬间想到了另外的一个题目:一个数组,数组中有5个数字,如何判断这5个数字是否是连续的:

let arr = [1,2,3,4,5]

感觉这两道题目的解法是一样的,后面这道数字的相对比较简单,不用处理时间问题,咱们先来解决后面这道题。

那么思路是什么样的呢?我们可以假设arr数组中5个数字是连续的,然后在此基础之上,我们做一些操作,做什么操作呢?

假如5个数字是连续的,那么第一个数字加4,第二个数字加3,第三个数字加2,第四个数字加1,第五个数字加0,最终得到:

let newarr = [5,5,5,5,5];

然后判断每个数字是否都相等,如果相等那么说明arr是连续的,反之则是不连续的。

思路有了,代码如下:

let arr = [1,2,3,4,5];
let newarr = arr.sort().map((e,i)=>{    return e+4-i})let stand = newarr[0];
let isTrue = newarr.every(e=>{    return e===stand})
console.log(isTrue)

接下来我们看日期是否连续该如何判断:

let days = [  '2016-02-28',  '2016-02-29', // 闰月  '2016-03-01', // 跨月  '2016-03-02',  '2016-03-03',]

观察上面的日期数组,我们假定日期是连续的,然后对每一个日期进行处理,但是该如何处理呢?

上面数字题目比较直观,假设数字连续,设置成相同数字,日期则需要利用js的日期处理API了,我们可以利用Date对象的setDate方法将其设置成相同的日期。  

简单说就是将2016-02-28、2016-02-29等日期设置成2016-03-03,我们可以这样做,代码如下:

let dt = new Date("2016-02-28");dt.setDate(dt.getDate()+4-1)console.log(dt)

打印结果:

js怎么判断日期天数

处理日期的方法有了,将给定数组中所有日期都处理一下,最终代码如下:

let days = [    '2016-02-28',    '2016-02-29', // 闰月    '2016-03-01', // 跨月    '2016-03-02',    '2016-03-03',]
let newdays = days.map((e,i)=>{    let dt = new Date(e);    dt.setDate(dt.getDate() + 4 - i);    //转换成时间戳    return +dt})let stand = newdays[0]let isTrue = newdays.every(e=>{    console.log(e,stand)    return stand ===e})console.log(isTrue)

再深入一下,如果给的时间是这样的呢?

let days = [  '2016-02-28 12:00:00',  '2016-02-29 12:00:01', // 闰月  '2016-03-01 12:00:02', // 跨月  '2016-03-02 12:00:03',  '2016-03-03 12:00:04',  '2016-03-04 12:00:04',]

我们只需要对时间的时、分、秒、毫秒,处理一下即可,代码如下:

let days = [    '2016-02-28 12:00:00',    '2016-02-29 12:00:01', // 闰月    '2016-03-01 12:00:02', // 跨月    '2016-03-02 12:00:03',    '2016-03-03 12:00:04',    '2016-03-04 12:00:04',]
let newdays = days.map((e,i)=>{        let dt = new Date(e);        dt.setDate(dt.getDate() + 4 - i);        dt.setHours(0);        dt.setMinutes(0);        dt.setSeconds(0);        dt.setMilliseconds(0);        return +dt})let stand = newdays[0]let isTrue = newdays.every(e=>{    return stand ===e})console.log(isTrue)

“js怎么判断日期天数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

js
AI