首页 > 编程 > JavaScript > 正文

js获取一组日期中最近连续的天数

2019-11-19 16:29:30
字体:
来源:转载
供稿:网友

用js获取一组日期(并把当天算入)中连续的天数,具体内容如下

首先得有一组日期,比如:

var arr = ['2016/02/28','2016/02/29', '2017/02/26', '2017/02/27','2017/02/28']; //日期格式需要注意,因为考虑到要判断日期的连续性,会把该数组中元素转为时间戳;

然后要加入当前日期,获取:

var date = new Date();var y = date.getFullYear();var m = date.getMonth()+1;var d = date.getDate();var today = y+'/'+m+'/'+d;

转时间戳方法:

//转时间戳 function time(date){  return new Date(date); }

开始判断计数:

var num = 0;//声明计数变量;var le = arr.length;//数组长度;if(time(today)-time(arr[le-1])==86400000)//日期时间戳相差一天则连续;判断当前日期与最近一天{ num=2;//满足条件,连续2天; //然后对数组循环判断,满足则num++;否则中断循环; for(var i=le; i>0; i--){  if(time(arr[i-1])-time(arr[i-2])==86400000){   num++;   }else{    break;//如果只要找出所有连续的天数,不需要中断     }   console.log(num);  } }else{   console.log('第一天'); }

为了方便看效果可以将当前日期初始化;

today = '2017/03/01';//为验证二月转三月特初始化;可省略

完整的:

function lianxuDay(){     var arr = [     '2016/02/28',     '2016/02/29',      '2016/02/26',      '2017/02/27',     '2017/02/28'    ];    var date = new Date();    var y = date.getFullYear();    var m = date.getMonth()+1;    var d = date.getDate();    var today = y+'/'+m+'/'+d;    today = '2017/03/01';//为验证二月转三月特初始化;可省略    console.log(today);    //转时间戳     function time(date){     return new Date(date);     }    var num = 0;//声明计数变量;    var le = arr.length;//数组长度;    //console.log(time(today)-time(arr[le-1]));    if(time(today)-time(arr[le-1])==86400000)       //日期时间戳相差一天则连续,此法虽笨,但实用;判断当前日期与最近一天    {     num=2;//满足条件,连续2天;     //然后对数组循环判断,满足则num++;否则中断循环;     for(var i=le; i>0; i--){      if(time(arr[i-1])-time(arr[i-2])==86400000){       num++;       }else{        break;//如果只要找出所有连续的天数,不需要中断      }      console.log(num);     }     }else{     console.log('第一天');    }   }   lianxuDay();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表