1 const moment = require( 'moment' ); 2 3 const begin_date = '2017-12-12', 4 end_date = '2018-01-19', 5 arr = getAllDays( begin_date, end_date ); 6 7 console.log( 'arr: ', arr ); 8 9 function getAllDays( begin_date, end_date ) { 10 const errArr = [], 11 resultArr = [], 12 dateReg = /^[2]d{3}-[01]d-[0123]d$/; 13 14 if ( typeof begin_date !== 'string' || begin_date === '' || !dateReg.test( begin_date ) ) { 15 return errArr; 16 } 17 18 if ( typeof end_date !== 'string' || end_date === '' || !dateReg.test( end_date ) ) { 19 return errArr; 20 } 21 22 try { 23 const beginTimestamp = Date.parse( new Date( begin_date ) ), 24 endTimestamp = Date.parse( new Date( end_date ) ); 25 26 // 开始日期小于结束日期 27 if ( beginTimestamp > endTimestamp ) { 28 return errArr; 29 } 30 31 // 开始日期等于结束日期 32 if ( beginTimestamp === endTimestamp ) { 33 resultArr.push( begin_date ); 34 return resultArr; 35 } 36 37 let tempTimestamp = beginTimestamp, 38 tempDate = begin_date; 39 40 41 // 新增日期是否和结束日期相等, 相等跳出循环 42 while ( tempTimestamp !== endTimestamp ) { 43 resultArr.push( tempDate ); 44 45 // 增加一天 46 tempDate = moment( tempTimestamp ) 47 .add( 1, 'd' ) 48 .format( 'YYYY-MM-DD' ); 49 50 // 将增加时间变为时间戳 51 tempTimestamp = Date.parse( new Date( tempDate ) ); 52 } 53 54 // 将最后一天放入数组 55 resultArr.push( end_date ); 56 return resultArr; 57 58 } catch ( err ) { 59 return errArr; 60 } 61 }