JS获取当前日期是开学后的第几周,星期几

无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数。

首先我们需要明确,既然是开学后的第几周,那么就要知道是什么时候开学的,但是也许每个地方,每个人的开学时间都不一样,所以本代码决定将开学日期设置为一个参数,由使用者决定开学日期。

下面我们一起来看一下这段代码:

(function(){
	/*
	 * 说明:
	 * 一周的起始计算方式不同国家有所不同,很多其他国家将周日作为一周的开始
	 * 本代码使用中国习惯,将周一作为每周的开始
	 * 特此说明
	 */

	function TodayInfo(start) {
		var WEEKLEN = 7, // 一周7天为常量
			WEEKDAYS = ["日", "一", "二", "三", "四", "五", "六"],
			weekInfo = {"week": null, "day": null}, // 初始化返回信息,默认第null周,星期null
			oneDay = 24 * 60 * 60 * 1000, // 一天的毫秒时长
			weekLeave, // 开学当天所在周剩余天数
			weekStart, // 开学当天start是星期几
			today, // 今天
			dateDiff, // 今天与开学当天日期差
			sDate; //开学之日,日期对象
		var rDateStr = /\d{4}[\/-]\d{1,2}[\/-]\d{1,2}/g; // 简单的日期格式校验:2013/12/19
		if (!rDateStr.test(start)) {
			alert("请使用合法的开学日期!!!");
			return weekInfo;
		}
		sDate = new Date(start.replace("-", "/"));
		weekStart = sDate.getDay();
		weekStart = weekStart === 0 ? 7 : weekStart; // JS中周日的索引为0,这里转换为7,方便计算
		
		weekLeave = WEEKLEN - weekStart;
		today = new Date();
		weekInfo.day = WEEKDAYS[today.getDay()];
		today = new Date(today.getFullYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate());
		dateDiff = today - sDate;
		if (dateDiff < 0) {
			alert("别开玩笑了,你还没开学呢!!!");
			return weekInfo;
		}
		dateDiff = parseInt(dateDiff / oneDay);
		weekInfo.week = Math.ceil((dateDiff - weekLeave) / WEEKLEN) + 1;
		return weekInfo;
	}
	// 测试结果
	var td = TodayInfo("2013/12/16");
	console.log("今天是自2013/12/16日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
	td = TodayInfo("2013/11/11");
	console.log("今天是自2013/11/11日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
	td = TodayInfo("2013/09/01");
	console.log("今天是自2013/09/01日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
	td = TodayInfo("2013/12/29");
	console.log("今天是自2013/12/29日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
})();


  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值