js返回一组日期中最近连续的天数
用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();
js返回一组日期中最近连续的天数的更多相关文章
- js 判断一组日期是否是连续的
文章同步自个人博客:http://www.52cik.com/2016/07/10/consecutive-dates.html 这是群里一朋友问的问题,当时我说判断下 day 是否相邻即可,后来细想 ...
- JS返回一个字符串中长度最小的单词的长度
题目:编写一个方法,返回字符串中最小长度的单词的长度. var str = 'What a good day today!'; 1 //方法一 2 function returnString1(str ...
- JS 求一组数中所有数的和以及平均值
var arr = [10,20,30]; //计数器思想 var sum = 0; for(var i=0;i<arr.length;i++){ sum += arr[i]; } consol ...
- js怎样得出数组中某个数据最大连续出现的次数
1:js怎样得出数组中某个数据最大连续出现的次数 var test=[1,2,3,3,2,2,2,3,3,3,3,5,3,3,3,3,3] ; var j = 0 ; var max ...
- 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...
- Jsの数组练习-求一组数中的最大值和最小值,以及所在位置
要求:求一组数中的最大值和最小值,以及所在位置 代码实现: <!DOCTYPE html> <html lang="en"> <head> &l ...
- JS[获取两个日期中所有的月份]
//------[获取两个日期中所有的月份中] function getMonthBetween(start,end){ var result = []; var s = start.split(&q ...
- JS window对象 返回浏览历史中的其他页面 go()方法,根据当前所处的页面,加载 history 列表中的某个具体的页面。 语法: window.history.go(number);
返回浏览历史中的其他页面 go()方法,根据当前所处的页面,加载 history 列表中的某个具体的页面. 语法: window.history.go(number); 参数: 浏览器中,返回当前页面 ...
- js 时间戳转为日期格式
原文:js 时间戳转为日期格式 js 时间戳转为日期格式 什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time) ...
随机推荐
- 更换SSL证书
1.申请证书,需要提供完整域名(例如:xxx.aaa.com),会和证书完全匹配. 2.将证书上传到web服务器,例如我的nginx,在server中指定证书路径. 3.重启web服务器.(这个证书和 ...
- (转)十分钟了结MySQL information_schema
十分钟了结MySQL information_schema 原文:http://www.cnblogs.com/shengdimaya/p/6920677.html information_sche ...
- java.io.IOException: Could not find status of job:job_1534233312603_0002
hive执行插入数据操作 报错: 在hive console里面输入: set hive.jobname.length=20; 再次执行好了:
- MySQL 5.7.21版本sql_mode=only_full_group_by问题
用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT ...
- Linux 命令学习之rm
功能说明: rm 命令是对文件或目录进行删除操作. 语法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上 ...
- 机器学习中的范数规则化之L0、L1与L2范数
今天看到一篇讲机器学习范数规则化的文章,讲得特别好,记录学习一下.原博客地址(http://blog.csdn.net/zouxy09). 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化. ...
- c++ ‘nullptr’ 在此作用域中尚未声明
编译加上如下选项:-std=c++11 g++ 1.cpp -o k -std=c++11
- 正则表达式最后的/i是不区分大小写的意思
eg: "/\/*install$/i" 正则表达式 代表什么意思 /表达式的内容/ ,php中的正则表达式都必须在 / / 内 \/是匹配"/" 号,*号 ...
- Vue双向绑定的关键:Object.defineProperty()
这个方法了不起啊.vue.js和avalon.js 都是通过它实现双向绑定的.而且Object.observe也被草案发起人撤回了.所以defineProperty更有必要了解一下了. 先上几行代码看 ...
- wcf win7+iis7 异常消息为: 可能证书“CN=PmsWcfServer”没有能够进行密钥交换的私钥
原因是证书没有用户权限,解决方法: 1.开始-运行-mmc 2.添加[证书]管理单元 3.选择[证书(本地计算机)]-[个人]-[证书],右击PmsWcfServer证书-[所有任务]-[管理密钥] ...