用 moment 實現獲取本週、前 n 周、後 n 周開始結束日期

本文用 moment.js 實現了獲取本週、前 n 周、後 n 周開始結束日期,即周1、週日日期的方法。數組

先看代碼,封裝了個工具類 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]
  }
}
複製代碼

舉幾個例子來講明使用方法ui

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 的話就是獲取本週的數據。spa

相關文章
相關標籤/搜索