用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();

最新文章

  1. Pod 的安装
  2. 转:jquery选择器总结
  3. CDH介绍
  4. kuangbin_UnionFind J (POJ 2492)
  5. [改善Java代码]在接口中不要存在实现代码
  6. vbe6ext.olb不能被加载 宏内存溢出
  7. Redis实战之征服 Redis + Jedis + Spring (二)
  8. LAMP 搭建wordpress部署教程贴.
  9. redis 学习笔记一
  10. poj1363
  11. C. Ayoub and Lost Array
  12. 【BZOJ5294】[BJOI2018]二进制(线段树)
  13. 连号区间数|2013年蓝桥杯B组题解析第十题-fishers
  14. python爬虫训练——正则表达式+BeautifulSoup爬图片
  15. SQLServer 学习笔记之超详细基础SQL语句 Part 3
  16. 构建-4 dependencies 依赖管理
  17. query:callback
  18. LR学习资料
  19. Tcp 编程 的时代 已经到来
  20. Dubbo架构设计详解(转载)

热门文章

  1. C语言的组成 以及预编译
  2. 恢复xfs文件系统superblock实验
  3. centos安装 Anaconda3及使用
  4. 【xsy1097】 拼图 构造题
  5. java数据结构之二叉树遍历的非递归实现
  6. docker 查看拉取镜像源地址
  7. Mac OS配置Android SDK环境变量(当不存在 .bash_profile 文件的时候)
  8. HUE配置文件hue.ini 的hdfs_clusters模块详解(图文详解)(分HA集群和非HA集群)
  9. sass中@的作用
  10. php的isset()和empty()区别