js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期


Posted in Javascript onFebruary 01, 2020

js 获取 本周、上周、本月、上月、本季度、上季度的开始结束日期

/**
 * 获取本周、本季度、本月、上月的开始日期、结束日期
 */
var now = new Date(); //当前日期
var nowDayOfWeek = now.getDay(); //今天本周的第几天
var nowDay = now.getDate(); //当前日
var nowMonth = now.getMonth(); //当前月
var nowYear = now.getYear(); //当前年
nowYear += (nowYear < 2000) ? 1900 : 0; //
var lastMonthDate = new Date(); //上月日期
lastMonthDate.setDate(1);
lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
var lastYear = lastMonthDate.getYear();
var lastMonth = lastMonthDate.getMonth();
//格式化日期:yyyy-MM-dd
function formatDate(date) {
  var myyear = date.getFullYear();
  var mymonth = date.getMonth() + 1;
  var myweekday = date.getDate();
  if (mymonth < 10) {
    mymonth = "0" + mymonth;
  }
  if (myweekday < 10) {
    myweekday = "0" + myweekday;
  }
  return (myyear + "-" + mymonth + "-" + myweekday);
}
//获得某月的天数
function getMonthDays(myMonth) {
  var monthStartDate = new Date(nowYear, myMonth, 1);
  var monthEndDate = new Date(nowYear, myMonth + 1, 1);
  var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
  return days;
}
//获得本季度的开始月份
function getQuarterStartMonth() {
  var quarterStartMonth = 0;
  if (nowMonth < 3) {
    quarterStartMonth = 0;
  }
  if (2 < nowMonth && nowMonth < 6) {
    quarterStartMonth = 3;
  }
  if (5 < nowMonth && nowMonth < 9) {
    quarterStartMonth = 6;
  }
  if (nowMonth > 8) {
    quarterStartMonth = 9;
  }
  return quarterStartMonth;
}
//获得本周的开始日期
function getWeekStartDate() {
  var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
  return formatDate(weekStartDate);
}
//获得本周的结束日期
function getWeekEndDate() {
  var weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
  return formatDate(weekEndDate);
}
//获得上周的开始日期
function getLastWeekStartDate() {
  var weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7);
  return formatDate(weekStartDate);
}
//获得上周的结束日期
function getLastWeekEndDate() {
  var weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1);
  return formatDate(weekEndDate);
}
//获得本月的开始日期
function getMonthStartDate() {
  var monthStartDate = new Date(nowYear, nowMonth, 1);
  return formatDate(monthStartDate);
}
//获得本月的结束日期
function getMonthEndDate() {
  var monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
  return formatDate(monthEndDate);
}
//获得上月开始时间
function getLastMonthStartDate() {
  var lastMonthStartDate = new Date(nowYear, lastMonth, 1);
  return formatDate(lastMonthStartDate);
}
//获得上月结束时间
function getLastMonthEndDate() {
  var lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
  return formatDate(lastMonthEndDate);
}
//获得本季度的开始日期
function getQuarterStartDate() {
  var quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
  return formatDate(quarterStartDate);
}
//或的本季度的结束日期
function getQuarterEndDate() {
  var quarterEndMonth = getQuarterStartMonth() + 2;
  var quarterStartDate = new Date(nowYear, quarterEndMonth,
      getMonthDays(quarterEndMonth));
  return formatDate(quarterStartDate);
}

js 计算月/周的第一天和最后一天

因为项目开发中遇到需要向后台传本周的开始和结束时间,以及上一周的起止时间,就琢磨了半天,总算写出来一套,写篇文章是为了方便自己记忆,也是分享给需要的人,水平有限,写的不好请见谅:

getDateStr3函数是为了把时间对象转变为yy-mm-dd的字符串,方便传值;

getWeekStartAndEnd函数是获取周的起止时间,并且用getDateStr3转换成字符串放到数组中,其中参数0代表当前周,-1代表前一周,-2代表上上周,以此类推,反过来也可以1代表下一周;

getMonthStartAndEnd函数是获取月的起止时间,传参同上

//获取当前日期yy-mm-dd
//date 为时间对象
function getDateStr3(date) {
  var year = "";
  var month = "";
  var day = "";
  var now = date;
  year = ""+now.getFullYear();
  if((now.getMonth()+1)<10){
    month = "0"+(now.getMonth()+1);
  }else{
    month = ""+(now.getMonth()+1);
  }
  if((now.getDate())<10){
    day = "0"+(now.getDate());
  }else{
    day = ""+(now.getDate());
  }
  return year+"-"+month+"-"+day;
}
/** 
* 获得相对当前周AddWeekCount个周的起止日期 
* AddWeekCount为0代表当前周  为-1代表上一个周  为1代表下一个周以此类推
* **/ 
function getWeekStartAndEnd(AddWeekCount) { 
  //起止日期数组  
  var startStop = new Array(); 
  //一天的毫秒数  
  var millisecond = 1000 * 60 * 60 * 24; 
  //获取当前时间  
  var currentDate = new Date();
  //相对于当前日期AddWeekCount个周的日期
  currentDate = new Date(currentDate.getTime() + (millisecond * 7*AddWeekCount));
  //返回date是一周中的某一天
  var week = currentDate.getDay(); 
  //返回date是一个月中的某一天  
  var month = currentDate.getDate();
  //减去的天数  
  var minusDay = week != 0 ? week - 1 : 6; 
  //获得当前周的第一天  
  var currentWeekFirstDay = new Date(currentDate.getTime() - (millisecond * minusDay)); 
  //获得当前周的最后一天
   var currentWeekLastDay = new Date(currentWeekFirstDay.getTime() + (millisecond * 6));
  //添加至数组  
  startStop.push(getDateStr3(currentWeekFirstDay)); 
  startStop.push(getDateStr3(currentWeekLastDay)); 
  
  return startStop; 
} 
/** 
* 获得相对当月AddMonthCount个月的起止日期 
* AddMonthCount为0 代表当月 为-1代表上一个月 为1代表下一个月 以此类推
* ***/ 
function getMonthStartAndEnd(AddMonthCount) { 
  //起止日期数组  
  var startStop = new Array(); 
  //获取当前时间  
  var currentDate = new Date();
  var month=currentDate.getMonth()+AddMonthCount;
  if(month<0){
    var n = parseInt((-month)/12);
    month += n*12;
    currentDate.setFullYear(currentDate.getFullYear()-n);
  }
  currentDate = new Date(currentDate.setMonth(month));
  //获得当前月份0-11  
  var currentMonth = currentDate.getMonth(); 
  //获得当前年份4位年  
  var currentYear = currentDate.getFullYear(); 
  //获得上一个月的第一天  
  var currentMonthFirstDay = new Date(currentYear, currentMonth,1); 
  //获得上一月的最后一天  
  var currentMonthLastDay = new Date(currentYear, currentMonth+1, 0); 
  //添加至数组  
  startStop.push(getDateStr3(currentMonthFirstDay)); 
  startStop.push(getDateStr3(currentMonthLastDay)); 
  //返回  
  return startStop; 
}

好了这篇文章就介绍到这了

Javascript 相关文章推荐
JavaScript中this关键字使用方法详解
Mar 08 Javascript
javascript IE中的DOM ready应用技巧
Jul 23 Javascript
用javascript模仿ie的自动完成类似自动完成功的表单
Dec 12 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
JavaScript编写简单的计算器
Nov 25 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
Apr 14 Javascript
bootstrap多种样式进度条展示
Dec 20 Javascript
快速解决bootstrap下拉菜单无法隐藏的问题
Aug 10 Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 Javascript
js实现简单贪吃蛇游戏
May 15 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
Feb 08 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 #Javascript
vue学习笔记之slot插槽基本用法实例分析
Feb 01 #Javascript
vue学习笔记之作用域插槽实例分析
Feb 01 #Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
Feb 01 #Javascript
Jquery Datatables的使用详解
Jan 30 #jQuery
jQuery Datatables 动态列+跨列合并实现代码
Jan 30 #jQuery
js页面加载后执行的几种方式小结
Jan 30 #Javascript
You might like
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
python获取交互式ssh shell的方法
2019/02/14 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
一套Java笔试题
2016/08/20 面试题
建筑专业自荐信
2013/10/18 职场文书
淘宝活动策划方案
2014/02/06 职场文书
2014年商场工作总结
2014/11/22 职场文书
三年级学生评语大全
2014/12/26 职场文书
Flask response响应的具体使用
2021/07/15 Python