JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码


Posted in Javascript onDecember 05, 2018

好久没有记录工作中遇到的问题,其中的原因之一应该是没有什么代表性的或者说是没有网上搜不到答案的,毕竟在大多数前端中我还是很渺小。今天写这个博客就是因为工作中遇到了问题而且网上也没有找到合适的答案,自己写了大部分代码加上借鉴了一些别人的思想,下面就步入正题:

—更新: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获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
将HTML自动转为JS代码
Jun 26 Javascript
求解开jscript.encode代码的asp函数
Feb 28 Javascript
Jquery中增加参数与Json转换代码
Nov 20 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
jquery中获得元素尺寸和坐标的方法整理
May 18 Javascript
JQuery复制DOM节点的方法
Jun 11 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
用jQuery获取table中行id和td值的实现代码
May 19 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
Jul 13 jQuery
vue 点击按钮实现动态挂载子组件的方法
Sep 07 Javascript
JS获取月的第几周和年的第几周实例代码
Dec 05 #Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 #Javascript
vue-cli3搭建项目的详细步骤
Dec 05 #Javascript
详解vue中async-await的使用误区
Dec 05 #Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 #Javascript
使用FormData实现上传多个文件
Dec 04 #Javascript
vue自定义指令的创建和使用方法实例分析
Dec 04 #Javascript
You might like
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
php中的异常和错误浅析
2017/05/03 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
详解动画插件wow.js的使用方法
2017/09/13 Javascript
vscode下vue项目中eslint的使用方法
2019/01/13 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
Python实现栈的方法
2015/05/26 Python
python妹子图简单爬虫实例
2015/07/07 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
python实现kmp算法的实例代码
2019/04/03 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
学生党员思想汇报
2013/12/28 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
运动会100米广播稿
2015/08/19 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书