js返回一组日期中最近连续的天数

用js获取一组日期(并把当天算入)中连续的天数

刚开始可能想到单纯的比较日期大小判断连续, 而又有大小月,平闰年这些因素,还是时间戳来的安全;

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

1 var arr = [
2 '2016/02/28',
3 '2016/02/29', 
4 '2017/02/26', 
5 '2017/02/27',
6 '2017/02/28'
7 ]; 
//日期格式需要注意,因为考虑到要判断日期的连续性,会把该数组中元素转为时间戳;
然后要加入当前日期,获取:
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); 
}

开始判断计数:

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

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

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

完整的:

ContractedBlock.gif ExpandedBlockStart.gif
 1 function lianxuDay(){
 2                  var arr = [
 3                   '2016/02/28',
 4                   '2016/02/29', 
 5                   '2016/02/26', 
 6                   '2017/02/27',
 7                   '2017/02/28'
 8                 ];
 9                 var date = new Date();
10                 var y = date.getFullYear();
11                 var m = date.getMonth()+1;
12                 var d = date.getDate();
13                 var today = y+'/'+m+'/'+d;
14                 today = '2017/03/01';//为验证二月转三月特初始化;可省略
15                 console.log(today);
16                 //转时间戳 
17                 function time(date){
18                     return new Date(date); 
19                 }
20                 var num = 0;//声明计数变量;
21                 var le = arr.length;//数组长度;
22                 //console.log(time(today)-time(arr[le-1]));
23                 if(time(today)-time(arr[le-1])==86400000)
24                          //日期时间戳相差一天则连续,此法虽笨,但实用;判断当前日期与最近一天
25                 {
26                     num=2;//满足条件,连续2天;
27                     //然后对数组循环判断,满足则num++;否则中断循环;
28                     for(var i=le; i>0; i--){
29                         if(time(arr[i-1])-time(arr[i-2])==86400000){
30                             num++; 
31                         }else{ 
32                             break;//如果只要找出所有连续的天数,不需要中断
33                         }
34                         console.log(num);
35                     } 
36                 }else{
37                     console.log('第一天');
38                 }
39             }
40             lianxuDay();                           
View Code

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值