本文用 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