用 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM