zoukankan      html  css  js  c++  java
  • 用 moment 实现获取本周、前n周、后 n 周开始结束日期

    封装了工具类 DateTimeUtils.js,可以直接复制到项目中使用.

    /**
     * 时间日期工具类
     */
    import moment from 'moment'
    
    export default {
      /**
       * 获取本周周一和周日日期
       */
      getCurrentWeek() {
        const start = moment().weekday(1).format('YYYY-MM-DD'); //本周一
        const end = moment().weekday(7).format('YYYY-MM-DD'); //本周日
        return [start, end]
      },
    
      /**
       * 获取前 i 周的周一和周日日期,并以数组的方式返回。
       * 当 i=1,获取的是上周一和上周日的日期;
       * 当 i=2,获取的是上上周一和上上周日的日期
       * ...以此类推
       * @param i
       */
      getLastWeek(i) {
        let weekOfDay = parseInt(moment().format('E'));//计算今天是这周第几天
        let last_monday = moment().subtract(weekOfDay + 7 * i - 1, 'days').format('YYYY-MM-DD');//周一日期
        let last_sunday = moment().subtract(weekOfDay + 7 * (i - 1), 'days').format('YYYY-MM-DD');//周日日期
        return [last_monday, last_sunday]
      },
    
      /**
       * 获取后 i 周的周一和周日日期,并以数组的方式返回。
       * 当 i=1,获取的是下周一和下周日的日期;
       * 当 i=2,获取的是下下周一和下下周日的日期
       * ...以此类推
       * @param i
       */
      getNextWeek(i) {
        let weekOfDay = parseInt(moment().format('E'));//计算今天是这周第几天
        let next_monday = moment().add((7 - weekOfDay) + 7 * (i - 1) + 1, 'days').format('YYYY-MM-DD');//周一日期
        let next_sunday = moment().add((7 - weekOfDay) + 7 * i, 'days').format('YYYY-MM-DD');//周日日期
        return [next_monday, next_sunday]
      }

    举几个例子来说明使用方法

    let currentWeek1 = DateTimeUtils.getCurrentWeek()  //获取本周开始结束日期
    let currentWeek2 = DateTimeUtils.getLastWeek(0)  //获取本周开始结束日期
    let currentWeek3 = DateTimeUtils.getNextWeek(0)  //获取本周开始结束日期
    
    let lastWeek1 = DateTimeUtils.getLastWeek(1)  //获取上周开始结束日期
    let lastWeek2 = DateTimeUtils.getLastWeek(2)  //获取前两周的那一周即上上周开始结束日期
    let lastWeek3 = DateTimeUtils.getLastWeek(3)  //获取前三周的那一周开始结束日期
    
    let nextWeek1 = DateTimeUtils.getNextWeek(1)  //获取下周开始结束日期
    let nextWeek2 = DateTimeUtils.getNextWeek(2)  //获取后两周那一周即下下周开始结束日期
    let nextWeek3 = DateTimeUtils.getNextWeek(3)  //获取后三周那一周开始结束日期

    想获取前几周或后几周的开始结束日期,就在调用 getLastWeek(i) 和 getNextWeek(i) 的时候把相应的数字传进去即可。传 0 的话就是获取本周的数据。

    ps: moment文档地址   https://momentjs.com/docs/#/displaying/format/

  • 相关阅读:
    CF767C Garland
    P2458 [SDOI2006]保安站岗
    P2704 [NOI2001]炮兵阵地
    P2607 [ZJOI2008]骑士
    POJ 1201 Interval (查分约束系统)
    位运算的魅力---N皇后问题
    设计模式之代理模式20170724
    C之Volatile关键字的介绍与使用20170724
    设计模式之桥梁模式20170721
    设计模式之策略模式20170720
  • 原文地址:https://www.cnblogs.com/catherLee/p/13948386.html
Copyright © 2011-2022 走看看