用 moment 實(shí)現(xiàn)獲取本周、前 n 周、后 n 周開(kāi)始結(jié)束日期

本文用 moment.js 實(shí)現(xiàn)了獲取本周、前 n 周、后 n 周開(kāi)始結(jié)束日期,即周一、周日日期的方法。

先看代碼,封裝了個(gè)工具類(lèi) DateTimeUtils.js,可以直接復(fù)制到項(xiàng)目中使用

/**
 * 時(shí)間日期工具類(lèi)
 */
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 周的周一和周日日期,并以數(shù)組的方式返回。
   * 當(dāng) i=1,獲取的是上周一和上周日的日期;
   * 當(dāng) i=2,獲取的是上上周一和上上周日的日期
   * ...以此類(lèi)推
   * @param i
   */
  getLastWeek(i) {
    let weekOfDay = parseInt(moment().format('E'));//計(jì)算今天是這周第幾天
    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 周的周一和周日日期,并以數(shù)組的方式返回。
   * 當(dāng) i=1,獲取的是下周一和下周日的日期;
   * 當(dāng) i=2,獲取的是下下周一和下下周日的日期
   * ...以此類(lèi)推
   * @param i
   */
  getNextWeek(i) {
    let weekOfDay = parseInt(moment().format('E'));//計(jì)算今天是這周第幾天
    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]
  }
}

舉幾個(gè)例子來(lái)說(shuō)明使用方法

let currentWeek1 = DateTimeUtils.getCurrentWeek()  //獲取本周開(kāi)始結(jié)束日期
let currentWeek2 = DateTimeUtils.getLastWeek(0)  //獲取本周開(kāi)始結(jié)束日期
let currentWeek3 = DateTimeUtils.getNextWeek(0)  //獲取本周開(kāi)始結(jié)束日期

let lastWeek1 = DateTimeUtils.getLastWeek(1)  //獲取上周開(kāi)始結(jié)束日期
let lastWeek2 = DateTimeUtils.getLastWeek(2)  //獲取前兩周的那一周即上上周開(kāi)始結(jié)束日期
let lastWeek3 = DateTimeUtils.getLastWeek(3)  //獲取前三周的那一周開(kāi)始結(jié)束日期

let nextWeek1 = DateTimeUtils.getNextWeek(1)  //獲取下周開(kāi)始結(jié)束日期
let nextWeek2 = DateTimeUtils.getNextWeek(2)  //獲取后兩周那一周即下下周開(kāi)始結(jié)束日期
let nextWeek3 = DateTimeUtils.getNextWeek(3)  //獲取后三周那一周開(kāi)始結(jié)束日期

想獲取前幾周或后幾周的開(kāi)始結(jié)束日期,就在調(diào)用 getLastWeek(i)getNextWeek(i) 的時(shí)候把相應(yīng)的數(shù)字傳進(jìn)去即可。當(dāng)然傳 0 的話(huà)就是獲取本周的數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容