获取时间区间所有日期的小工具

根据两个日期 获取日期区间的所有日期和星期

假设我们要获取2019-10-10 到 2019-12-12之间的所有日期,直接上代码先

//给Date对象的原型加一个时间格式化为 YYYY-MM-DD的函数
Date.prototype.format=function(){
	var y=this.getFullYear(); //获取年份
	var m=this.getMonth()+1>=10?this.getMonth()+1:'0'+(this.getMonth()+1); //获取月份
	var d=this.getDate()>=10?this.getDate():'0'+this.getDate(); //获取日期
	return y+'-'+m+'-'+d
}
/**
	获取两个时间区间的所有日期和星期
	@startTime{String} 开始时间
	@endTime{String} 开始时间
*/
function getDateAll(startTime,endTime){
	var uniDs=Date.parse(startTime); //获取开始日期的毫秒数
	var uniDe=Date.parse(endTime); //获取结束日期的毫秒数
	var dateList=[]; //用来保存日期
	var weekList=["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
	for(var i=uniDs;i<=uniDe;){
		var dateItem={}; //保存日期的每一天
		var CUR_DATE=new Date(parseInt(i)); //设置当前日期的时间
		dateItem.date=CUR_DATE.format(); //这里调用了在Date对象原型上加的格式时间函数获得YYYY-MM-DD格式的时间
		dateItem.week=weekList[CUR_DATE.getDay()] //getDay()方法从 Date 对象返回一周中的某一天 (0 ~ 6)
		//...... 这里你还可以根据自己的需要给dateItme加你想要的属性
		dateList.push(dateItem);
		i=i+24*60*60*1000; //循环变量增加一天的毫秒数
	}
	return dateList
}

这个方法需要掌握几个关于Date对象的方法

  1. Date.parse()返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
  2. Date创建实例对象时,传入指定日期的毫秒数设置为标准时间
  3. getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6) getDay()是Date对象原型中的方法,所以只有Date或者Date的实例对象才可以调用

代码亲测有效,如有不对的地方,欢迎大家指证,前端新手希望和大家一起学习进步,

有时候我们需要的日期是活动的,比如说,查询过去一个月的营销记录,这个时候我们要的日期区间就是变化的,获取过去或者未来的日期通过程序来完成

/**
	获取前 n 天 或者 后 n 天 
	@param dateNumber[number]  指定的时间长度
*/
function getDateStr(dateNumber){
	var CUR_DATE = new Date();
	CUR_DATE.setDate(CUR_DATE.getDate() + dateNumber); //CUR_DATE 设置为指定长度的日期
	var resDate = CUR_DATE.format(); // format() 是自定义在Date构造函数上的方法
	return resDate 
}

setDate() 方法返回值是毫秒数,调用此方法的Date实例被设置为指定标准日期

最后在页面中使用

let start = getDateStr(-30)	// 前30天的日期
let end = getDateStr(30)     // 后30天的日期
let allDate = getDateAll(start,end)    // start - end 所有的日期
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值