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 相关文章推荐
实用javaScript技术-屏蔽类
Aug 15 Javascript
js 创建书签小工具之理论
Feb 25 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
JavaScript中的Number数字类型学习笔记
May 26 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
Mar 31 Javascript
微信小程序 动态传参实例详解
Apr 27 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
node实现登录图片验证码的示例代码
Apr 20 Javascript
Js中将Long转换成日期格式的实现方法
Jun 05 Javascript
JS实现的对象去重功能示例
Jun 04 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
Sep 23 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利用COM对象访问SQLServer、Access
2006/10/09 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
CodeIgniter辅助之第三方类库third_party用法分析
2016/01/20 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP实现微信退款功能
2018/10/02 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
Javascript Object.extend
2010/05/18 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
js实现日历与定时器
2017/02/22 Javascript
Angularjs上传文件组件flowjs功能
2017/08/07 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
Python及PyCharm下载与安装教程
2017/11/18 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Python工程师面试必备25条知识点
2018/01/17 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
通过python爬虫赚钱的方法
2019/01/29 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
终端业务员岗位职责
2013/11/27 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技
MySQL中order by的执行过程
2022/06/05 MySQL