时间:2021-05-26
好久没有记录工作中遇到的问题,其中的原因之一应该是没有什么代表性的或者说是没有网上搜不到答案的,毕竟在大多数前端中我还是很渺小。今天写这个博客就是因为工作中遇到了问题而且网上也没有找到合适的答案,自己写了大部分代码加上借鉴了一些别人的思想,下面就步入正题:
—更新:2018-6-20 加上今天是不是周日的判断
—更新:2018-7-31 给String添加方法来实现调用,感谢Rainbow_miao的提醒。github地址:https://github.com/zancheng/weekCalculation
JS源码
判断规则
第一周 : 是这个月的新一周,且不在上个月最后一周内。
// 获取某年某月的有多少周String.prototype.weekInMonthCount = function () { var date = new Date((new Date(this).setDate(1)) || (new Date()).setDate(1)); var firstWeekDate = 1;// 默认第一周是本月1号 为了模拟本月1号是否为本月第1周的判断 if (date.getDay() === 1) { // 判断1号是周一 firstWeekDatek = 1; } else if (date.getDay() === 0) { // 判断1号是周日 firstWeekDate = 8 - 7 + 1; } else { // 判断1号是周二至周六之间 firstWeekDate = 8 - date.getDay() + 1; } date.setMonth(date.getMonth()+1); date.setDate(0); var monthHasDays = date.getDate();// 本月天数 monthHasDays = date.getDate() - firstWeekDate + 1; var hasWeek = Math.ceil(monthHasDays/7); // 计算本月有几周 return hasWeek;};// 获取今天是今年的第几周String.prototype.weekIndexInYear = function () { var nowDate = new Date(this != '' ? this : new Date()); var initTime = new Date(this != '' ? this : new Date()); initTime.setMonth(0); // 本年初始月份 initTime.setDate(1); // 本年初始时间 var differenceVal = nowDate - initTime ; // 今天的时间减去本年开始时间,获得相差的时间 var todayYear = Math.ceil(differenceVal/(24*60*60*1000)); // 获取今天是今年第几天 var index = Math.ceil(todayYear/7); // 获取今天是今年第几周 return index;};// 获取今天是今年的第几天String.prototype.dateIndexInYear = function () { var nowDate = new Date(this != '' ? this : new Date()); var initTime = new Date(this != '' ? this : new Date()); initTime.setMonth(0); // 本年初始月份 initTime.setDate(1); // 本年初始时间 var differenceVal = nowDate - initTime ; // 今天的时间减去本年开始时间,获得相差的时间 return Math.ceil(differenceVal/(24*60*60*1000));};// 获取今天是第几周String.prototype.weekIndexInMonth = function () { var date = new Date(this.trim() != '' ? this : new Date()); var dateStart = new Date((new Date(this.trim() != '' ? this : new Date()).setDate(1))); // 本月初 var firstWeek = 1; if (dateStart.getDay() === 1) { firstWeek = 1; } else if (dateStart.getDay() === 0) { firstWeek = 8 - 7 + 1; } else { firstWeek = 8 - dateStart.getDay() + 1; } var weekIndex = 1; var c = date.getDate(); if (date.getDay() === 1 && date.getDate() < 7) { weekIndex = 1; } else if (c < firstWeek ) { weekIndex = -1; } else { if (c < 7) { weekIndex = Math.ceil(c/7); } else { c = c - firstWeek + 1; if (c%7 === 0) { if (dateStart.getDay() !== 6) { weekIndex = c/7; } else { weekIndex = c/7 + 1; } } else { weekIndex = Math.ceil(c/7); } } } return weekIndex;};方法说明及调用示例
String.prototype.dateIndexInYear
获取这一天属于今年的第多少天
默认时间是今天,调用方法示例:
'2018/10/1'.dateIndexInYear()
返回: 273
String.prototype.weekIndexInYear
获取这一天属于今年的第多少周
默认时间是今天,调用方法示例:
'2018-10-1'.weekIndexInYear()
返回: 39
String.prototype.weekInMonthCount
获取这一年的这一月的有多少周
默认时间是今天,调用方法示例:
'2018-10-1'.weekInMonthCount()
返回: 5
String.prototype.weekIndexInMonth
获取这一周属于本月第多少周
如果属于上个月,返回 -1
默认时间是今天,调用方法示例:
'2018-10-01'.weekIndexInMonth()
返回: 1
总结
以上所述是小编给大家介绍的JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了js实现获取当前时间是本月第几周的方法。分享给大家供大家参考。具体如下:vargetMonthWeek=function(a,b,c){/*a=d
MAC中显示今天是今年的第几天第几周吗?请按以下方式操作: 1)打开“系统偏好设置”,点击“语言与文本→地区&r
MAC中显示今天是今年的第几天第几周吗?请按以下方式操作: 1)打开“系统偏好设置”,点击“语言与文本→地区&r
本文讲的java日期计算比较偏,用到的地方很少(比如获取今天所在周的周一或者周日,获取今天是本月的第几周...),这些方法是以前做项目遗留下来的,现在整理一下,
下面一段代码给大家介绍JS获取月的第几周和年的第几周,具体代码如下所述:vargetMonthWeek=function(a,b,c){/*a=d=当前日期b=