一、计算当前一周对应日期

/*** 根据一个日期计算出其所在的一周,反正对应一周的相应日期* basisDate: 依据日期, 默认是当天*/calcWeekDate(basisDate = moment().format('YYYY-MM-DD')) {let weekDate = [];let howWeek = moment(basisDate).day();   // 获取到依据日期为星期几;0为星期日、6为星期6// 如果今天是周日,则单独处理,往前计算6天if (howWeek === 0) {let mixins = 0;while (mixins <= 6) {// 一次减1;即一次减6天,5天... => 获取到了这周的周一、周二、到今天weekDate.unshift(moment(basisDate).subtract(mixins, 'days').format('YYYY-MM-DD'));mixins++;}return weekDate;}let minusNum = 1, addNum = 1;// 用今天的日期对应的星期数去往前遍历while (minusNum <= howWeek) {// 一次减1;即一次减6天,5天... => 获取到了这周的周一、周二、到今天weekDate.push(moment(basisDate).subtract(howWeek - minusNum, 'days').format('YYYY-MM-DD'));minusNum++;}// 7 - howWeek 即今天后面要加的天数(一周是7天)while(addNum <= (7 - howWeek)) {weekDate.push(moment(basisDate).add(addNum, 'days').format('YYYY-MM-DD'));addNum++;}return weekDate;}

二、计算当前一月对应日期

/*** 根据一个日期计算出其所在的一月,反正对应一月的相应日期* basisDate: 依据日期, 默认是当天* replenishWeek: 是否需要将该月第一天和最后一天所在的周补全(通日历类似),默认需要*/calcMonthDate(basisDate = moment().format('YYYY-MM-DD'), replenishWeek = true) {let monthDate = [];const monthStart = moment(basisDate).startOf('month').format("YYYY-MM-DD");      // 该月第一天const monthEnd = moment(basisDate).endOf('month').format("YYYY-MM-DD");          // 该月最后一天monthDate.push(monthStart);   // 先将当月第一天放到数组中let addNum = 1;while (monthDate[monthDate.length - 1] < monthEnd) {// 依次用当月第一天加,直到该月的最后一天monthDate.push(moment(monthStart).add(addNum, 'days').format('YYYY-MM-DD'));addNum++;}if (replenishWeek) {    // 根据参数,补全该月第一天和最后一天所在的周// 调用方法,得出该月第一天和最后一天分别是周几 => 星期日为 0、星期六为 6 const monthStartWeek = moment(monthDate[0]).day();const monthEndWeek = moment(monthDate[monthDate.length - 1]).day();let addEmpty = 1, minusNum = 1;/** 注意:我们默认的日历显示是 周一 => 周日 */let unshiftEnd = monthStartWeek;  // 默认,当月第一天是周几,就往前加n-1天(如周五:往前加5-1天; 周日:往前加7-1天)if (monthStartWeek === 0) {unshiftEnd = 7}while (minusNum < unshiftEnd) { // 如果是周一,则一天也不会加// 一次减1;即分别在第一天的基础上减一天、两天、三天....;然后放到数组的前面monthDate.unshift(moment(monthStart).subtract(minusNum, 'days').format('YYYY-MM-DD'));minusNum++;}if (monthEndWeek !== 0) {   // 如果最后一天是周日,则不补齐剩余日期// 7 - monthEndWeek 即这个月最后一天后面要加的天数(一周是7天) =>> 往后把一周补全(最后以周六结束,周日在最前面)// while(addEmpty < (7 - monthEndWeek + 1)) {   // 7 - monthEndWeek + 1 : 周天在最后;7 - monthEndWeek:周天在最前while(addEmpty <= 7 - monthEndWeek) {   //<= : 周天在最后;<:周天在最前monthDate.push(moment(monthEnd).add(addEmpty, 'days').format('YYYY-MM-DD'));addEmpty++;}}}return monthDate;}
}

文章仅为本人学习过程的一个记录,仅供参考,如有问题,欢迎指出!

moment.js 计算当前一周、一月对应日期相关推荐

  1. JS计算当前日期的周次

    函数: function getweek(z){//参数z是"2018-05-07 15:12:36"或者"2018/05/07 15:12:36"var da ...

  2. JS计算本周一和本周五的日期

    代码不长: var today=new Date(); var weekday=today.getDay();      var monday=new Date(1000*60*60*24*(1-we ...

  3. js日期计算,根据当前日期计算n个月后的日期

    js计算n个月后的日期,并匹配月底,处理闰年,闰月 工作中遇到日期计算的需求,需要根据给定的日期计算出n个月后的日期,开始感觉挺简单一需求,因为现成的moment.js就有日期加月份计算的功能,但需求 ...

  4. 计算一年有多少个周 每个周的开始日期和结束日期是什么

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! /** ...

  5. 计算一年有多少个周,每个周的开始日期和结束日期是什么

    /** * 返回指定年度的所有周.List中包含的是String[2]对象<br> * string[0]本周的开始日期,string[1]是本周的结束日期.<br> * 日期 ...

  6. excel函数计算第几周的方法

    内容提要:文章通过两个实例来介绍excel计算第几周的方法以及用excel函数第几周对应日期范围从几月几日到几月几日的解法.对Excel感兴趣的朋友可加 Excel学习交流群:284029260(ww ...

  7. c#日期转换周几_C#获取每个年,月,周的起始日期和结束日期的方法

    这篇文章主要介绍了C#获取每个年,月,周的起始日期和结束日期的方法,涉及C#时间与日期基本操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#获取每个年,月,周的起始日期和结束日期 ...

  8. js计算当前时间的为年的第几周,以及周对应的时间范围

    /*获取当前年的第几周,以及周对应的日期范围(根据当前日期的时间) *@author weiyongfu *@date 2017-11-17 */ function getYearWeekRange( ...

  9. js计算当月有几周并显示对应的日期

    需求说明:一个月按7天算,周日到周六,会存在有的月份是4周,有的月份是5周.本需求是跨月的情况下,算周三在哪个月份,就算入哪个月份. 获取本月的总天数 function getMonthDayTota ...

最新文章

  1. Python - 在CentOS7.5系统中安装Python3
  2. vscode怎么用命令行打开本地项目(code .)
  3. python自动化测试平台github_GitHub - DangKaio/FXTest: 接口自动化测试平台——python+flask版,支持http协议...
  4. css04使用外部样式
  5. 如何分析常见的TCP问题?
  6. 和搜狗输入法快捷键冲突_这款输入法被调教多年不输搜狗,爱了奥里给!
  7. fluke196c系统语言,原装二手福禄克Fluke196C 电工仪表
  8. LOL设计模式之「策略模式」
  9. 多系统精密星历下载与分析
  10. mysql计算增长率
  11. 程序人生 - 水的TDS值是什么意思?多少才算健康?
  12. 汉医健康:“互联网+医疗健康”让患者更有“医”靠
  13. NBD Network Block Device
  14. 华师c语言作业,C语言程序设计(华师在线作业)1.doc
  15. 【代码练习4】利用多线程处理和尚吃馒头问题
  16. 毕业设计—共享图书小程序3.0 全新UI
  17. 百度搜索接口api_百度站长平台上线落地页视频转存功能,确保专业问答视频资源的质量和稳定性...
  18. win10电脑怎样扩大C盘空间
  19. 各种优化器SGD,AdaGrad,Adam,LBFGS都做了什么?
  20. 形状工具(ps尚硅谷学习)

热门文章

  1. 儿童节到了!让 GitHub 上这几个小游戏帮你找回童真吧!
  2. python账号_基于Python打造账号共享浏览器功能
  3. AQS抽象队列同步器原理详解
  4. [水]关于web地图
  5. 不建议轻易做量化玩高频
  6. Linuxnbsp;用命令行打开docnbsp;pdf…
  7. Python 解析爬取的车次数据(12306)
  8. 电脑提高或开启高性能模式
  9. google统计ga.js本地化提高网站性能
  10. 联想涉密专用计算机 字体,Lenovo出厂高分屏笔记本高分辨率下字体模糊的解决方法...