moment.js扩展库moment-range.js
Fancy date ranges for Moment.js
https://github.com/rotaready/moment-range
const moment = require('moment'); const MomentRange = require('moment-range'); MomentRange.extendMoment(moment); const range = moment.range('2014-11-01', '2015-02-01'); // 月份 let months = Array.from(range.by('month')).map( month => month.format('YYYY-MM-DD') ); console.log(months); // [ '2014-11-01', '2014-12-01', '2015-01-01', '2015-02-01' ] // 年份 const years = Array.from(range.by('year')).map( month => month.year() ); console.log(years); // [ 2014 ] // 星期 const weeks = Array.from(range.by('week')).map( month => [ month.startOf('week').format('YYYY-MM-DD'), month.endOf('week').format('YYYY-MM-DD'), ] ); console.log(weeks); // [ [ '2014-10-26', '2014-11-01' ], // [ '2014-11-02', '2014-11-08' ], // [ '2014-11-09', '2014-11-15' ], // [ '2014-11-16', '2014-11-22' ], // [ '2014-11-23', '2014-11-29' ], // [ '2014-11-30', '2014-12-06' ], // [ '2014-12-07', '2014-12-13' ], // [ '2014-12-14', '2014-12-20' ], // [ '2014-12-21', '2014-12-27' ], // [ '2014-12-28', '2015-01-03' ], // [ '2015-01-04', '2015-01-10' ], // [ '2015-01-11', '2015-01-17' ], // [ '2015-01-18', '2015-01-24' ], // [ '2015-01-25', '2015-01-31' ] // ] // 季度 const quarters = Array.from(range.by('quarter')).map( month => month.format('[Q]Q') ); console.log(quarters); //[ 'Q4', 'Q1' ]