首页 > 代码库 > JS计算指定日期是距今的第几周,星期几
JS计算指定日期是距今的第几周,星期几
无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数。
首先我们需要明确,既然是指定日期距今的第几周,那么就要知道指定的日期是什么,而且是不能确定的,会根据使用者不同而得到不同的日期,所以我们需要将这个日期设置为参数,由使用者决定。
下面我们一起来看一下这段代码:
1 (function(){ 2 /* 3 * 说明: 4 * 一周的起始计算方式不同国家有所不同,很多其他国家将周日作为一周的开始 5 * 本代码使用中国习惯,将周一作为每周的开始 6 * 特此说明 7 */ 8 9 function TodayInfo(start) {10 var WEEKLEN = 7, // 一周7天为常量11 WEEKDAYS = ["日", "一", "二", "三", "四", "五", "六"],12 weekInfo = {"week": null, "day": null}, // 初始化返回信息,默认第null周,星期null13 oneDay = 24 * 60 * 60 * 1000, // 一天的毫秒时长14 weekLeave, // 开学当天所在周剩余天数15 weekStart, // 开学当天start是星期几16 today, // 今天17 dateDiff, // 今天与开学当天日期差18 sDate; //开学之日,日期对象19 var rDateStr = /\d{4}[\/-]\d{1,2}[\/-]\d{1,2}/g; // 简单的日期格式校验:2013/12/1920 if (!rDateStr.test(start)) {21 alert("请使用合法的开学日期!!!");22 return weekInfo;23 }24 sDate = new Date(start.replace("-", "/"));25 weekStart = sDate.getDay();26 weekStart = weekStart === 0 ? 7 : weekStart; // JS中周日的索引为0,这里转换为7,方便计算27 28 weekLeave = WEEKLEN - weekStart;29 today = new Date();30 weekInfo.day = WEEKDAYS[today.getDay()];31 today = new Date(today.getFullYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate());32 dateDiff = today - sDate;33 if (dateDiff < 0) {34 alert("别开玩笑了,你还没开学呢!!!");35 return weekInfo;36 }37 dateDiff = parseInt(dateDiff / oneDay);38 weekInfo.week = Math.ceil((dateDiff - weekLeave) / WEEKLEN) + 1;39 return weekInfo;40 }41 // 测试结果42 var td = TodayInfo("2013/12/16");43 console.log("今天是自2013/12/16日,开学以来的第 " + td.week + " 周,今天星期" + td.day);44 td = TodayInfo("2013/11/11");45 console.log("今天是自2013/11/11日,开学以来的第 " + td.week + " 周,今天星期" + td.day);46 td = TodayInfo("2013/09/01");47 console.log("今天是自2013/09/01日,开学以来的第 " + td.week + " 周,今天星期" + td.day);48 td = TodayInfo("2013/12/29");49 console.log("今天是自2013/12/29日,开学以来的第 " + td.week + " 周,今天星期" + td.day);50 })();
这里在跟大家介绍一些关于Date对象的使用技巧:
- 获取前一月的总天数
1 var a = new Date(), total = 0;2 a.setDate(0);3 total = a.getDate(); // 30
- 计算两个日期之间的时间差:
1 var total = new Date(‘2014/10/13‘) - new Date();
JS计算指定日期是距今的第几周,星期几
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。