同周比 日期速查 周首日

因公司业务软件的计算是周日至周六为一周,因此增加可选周首日按钮。

var DateUtils = {
	// 获取某日是一年中的第几周 周几
	getWeekNumber : function(d,m) {
		// Copy date so don't modify original
		d = new Date(d);
		d.setHours(0, 0, 0);
		var getDay = d.getDay();
		// Return array of year and week number
		var getFullYear = d.getFullYear();
		// Get first day of year
		var yearStartWeekFour=new Date(getFullYear, 0, 1);
		// Set to nearest Thursday: current date + 4 - current day number
		// 得到本周的星期4,7天
		if(m){
			yearStartWeekFour.setDate(yearStartWeekFour.getDate() + 4 - (yearStartWeekFour.getDay() || 7));
			d.setDate(d.getDate() + 4 - (d.getDay() || 7));
		}else{
			yearStartWeekFour.setDate(yearStartWeekFour.getDate() + 4 - (yearStartWeekFour.getDay()));
			d.setDate(d.getDate() + 4 - (d.getDay()));
		}
		// Calculate full weeks to nearest Thursday 
		var getWeekNo= Math.ceil((((d-yearStartWeekFour)/ 86400000) + 1) / 7);
		return [ getFullYear, getWeekNo, getDay ];
	},
	// 获取某年某周的起始和截止日期
	getStartAndEndDateByWeek : function(year, week,m) {
		var Nowdate = new Date(year, 0, 1); // 1月1日
		var nowweek_start;
		if(m){
			// Nowdate - ((Nowdate.getDay()||7) - 1)
			nowweek_start = new Date(Nowdate - (Nowdate.getDay() == 0 ? 6 : (Nowdate.getDay() - 1)) * 86400000); // 周开始时间
		}else{
			nowweek_start = new Date(Nowdate - Nowdate.getDay() * 86400000); // 周开始时间
		}
		var nowweek = 1;
		var start = new Date(nowweek_start - 86400000 * 7 * (nowweek - week)).format("yyyy-MM-dd");
		var end = new Date(nowweek_start - 86400000 * 7 * (nowweek - week) + 86400000 * 6).format("yyyy-MM-dd");
		return [ start, end ];
	},
	// 获取上一年第几周周几的日期
	getLastDateByYwd : function(year, week, day,m) {
		var lastwr = this.getStartAndEndDateByWeek(year - 1, week,m);
		var lastDate = new Date(lastwr[0]);
		if(m)
			lastDate.setDate(lastDate.getDate() + (day == 0 ? 6 : (day - 1)));
		else
			lastDate.setDate(lastDate.getDate() + day);
		return lastDate.format("yyyy-MM-dd");
	}
}

 

转载于:https://my.oschina.net/u/198423/blog/2251067

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值