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 相关文章推荐
js 蒙版进度条(结合图片)
Mar 10 Javascript
javascript与webservice的通信实现代码
Dec 25 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
Javascript 运动中Offset的bug解决方案
Dec 24 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
Jan 22 Javascript
vue.js项目中实用的小技巧汇总
Nov 29 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
Mar 23 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
Oct 10 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
Vue使用axios出现options请求方法
May 30 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
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
jQuery最佳实践完整篇
2011/08/20 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
js的touch事件的实际引用
2014/10/13 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python实现用户登录系统
2016/05/21 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
学院书画协会部门岗位职责
2013/12/01 职场文书
出纳岗位职责
2015/01/31 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
使用javascript解析二维码的三种方式
2021/11/11 Javascript
用Python实现屏幕截图详解
2022/01/22 Python
Python获取字典中某个key的value
2022/04/13 Python
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL