1.先引入 moment.js
cdn 引入
- <script src="https://cdn.bootcss.com/moment.js/2.20.1/locale/zh-cn.js">script>
或者 直接下载 下来 。如果是 框架里 用
npm install moment --save
代码如下:
格式可以随意改 。只要符合 moment规定的就行
- function enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- let daysList = [];
- let SDate=moment(startDate);
- let EDate=moment(endDate);
- let xt;
- daysList.push(SDate.format("MM-DD"));
- while( SDate.add(1,"days").isBefore( EDate) ){ // 注意这里add方法处理后SDate对象已经改变。
- daysList.push( SDate.format("MM-DD") );
- }
- daysList.push( EDate.format("MM-DD") );
- return daysList;
- }
- console.log( enumerateDaysBetweenDates('2021-06-09','2021-06-12'))
- console.log( enumerateDaysBetweenDates('2021-06-09 23:00','2021-06-12 01:00'))

其实就是 格式化问题 加上 dddd就行
- function enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- let daysList = [];
- let SDate=moment(startDate);
- let EDate=moment(endDate);
- let xt;
- daysList.push(SDate.format("MM-DD dddd"));
- while( SDate.add(1,"days").isBefore( EDate) ){ // 注意这里add方法处理后SDate对象已经改变。
- daysList.push( SDate.format("MM-DD dddd") );
- }
- daysList.push( EDate.format("MM-DD dddd") );
- return daysList;
- }
- console.log( enumerateDaysBetweenDates('2021-06-09','2021-06-12'))
- console.log( enumerateDaysBetweenDates('2021-06-09 23:00','2021-06-12 01:00'))
- console.log( enumerateDaysBetweenDates('2021-06-09 13:00','2021-06-12 21:00'))

如果想要 带年份 加个 YYYY就行 格式可以随意 改 。只要符合 moment规定的就行
- function enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- let daysList = [];
- let SDate = moment(startDate);
- let EDate = moment(endDate);
- let xt;
- daysList.push(SDate.format("YYYY-MM-DD dddd"));
- while (SDate.add(1, "days").isBefore(EDate)) { // 注意这里add方法处理后SDate对象已经改变。
- daysList.push(SDate.format("YYYY-MM-DD dddd"));
- }
- daysList.push(EDate.format("YYYY-MM-DD dddd"));
- return daysList;
- }
- console.log(enumerateDaysBetweenDates('2021-06-09', '2022-06-12'))
- console.log(enumerateDaysBetweenDates('2021-06-09 23:00', '2021-06-12 01:00'))
- console.log(enumerateDaysBetweenDates('2021-06-09 13:00', '2021-06-12 21:00'))
会发现有警告:
moment.min.js:1 Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
意思就是:
moment.min.js:1弃用警告:提供的值不是可识别的RFC2822或ISO格式。moment构造回溯到js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非RFC2822/ISO日期格式,并将在即将发布的主要版本中删除。请参阅http://momentjs.com/guides/#/warnings/js-日期/了解更多信息。
解决方案:
这个 说明 日期不符合 格式 加个 new Date就行了
console.log(enumerateDaysBetweenDates(new Date('2001'),new Date('2005')))
- const enumerateDaysBetweenDates = (startDate, endDate) => {
- let daysList = [];
- const start = moment(startDate);
- const end = moment(endDate);
- const day = end.diff(start, "year");
- daysList.push(start.format("YYYY"));
- for (let i = 1; i <= day; i++) {
- daysList.push(start.add(1, "year").format("YYYY"));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('2001','2005'))

其实年份 是最简单的不用 moment.js 也可以 一个 for循环就行 ,不想要 开始和结尾 那就 改变for循环的条件 i<=变成 i<。
- function enumerateDaysBetweenDates(startDate, endDate) {
- let daysList = [];
-
- for (let i = Number(startDate); i <= Number(endDate); i++) {
- daysList.push(String(i));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('2001', '2005'))
其实 也是一个 for循环就行,不想要 开始和结尾 那就 改变for循环的条件 i<=变成 i<。
这个只是 年内 的可以这样做
- function enumerateDaysBetweenDates(startDate, endDate) {
- let daysList = [];
- for (let i = Number(startDate); i <= Number(endDate)&&i<=12; i++) {
- daysList.push(String(i));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('6', '12'))
![]()
moment.js的方法 跨年了 最好 带上 年份
不想要 几号 那就把 DD去掉
- unction enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- let daysList = [];
- let SDate = moment(startDate);
- let EDate = moment(endDate);
- let xt;
- daysList.push(SDate.format("YYYY-MM-DD"));
- while (SDate.add(1, "month").isBefore(EDate)) { // 注意这里add方法处理后SDate对象已经改变。
- daysList.push(SDate.format("YYYY-MM-DD"));
- }
- daysList.push(EDate.format("YYYY-MM-DD"));
- return daysList;
- }
- console.log(enumerateDaysBetweenDates('2021-06-09', '2022-06-12'))
![]()
- html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- head>
-
- <body>
-
- body>
- <script src="https://cdn.bootcss.com/moment.js/2.20.1/moment.min.js">script>
- <script src="https://cdn.bootcss.com/moment.js/2.20.1/locale/zh-cn.js">script>
- <script>
- // // 带星期的
- // function enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- // let daysList = [];
- // let SDate = moment(startDate);
- // let EDate = moment(endDate);
- // let xt;
- // daysList.push(SDate.format("YYYY-MM-DD dddd"));
- // while (SDate.add(1, "days").isBefore(EDate)) { // 注意这里add方法处理后SDate对象已经改变。
- // daysList.push(SDate.format("YYYY-MM-DD dddd"));
- // }
- // daysList.push(EDate.format("YYYY-MM-DD dddd"));
- // return daysList;
- // }
- // console.log(enumerateDaysBetweenDates('2021-06-09', '2022-06-12'))
- // console.log(enumerateDaysBetweenDates('2021-06-09 23:00', '2021-06-12 01:00'))
- // console.log(enumerateDaysBetweenDates('2021-06-09 13:00', '2021-06-12 21:00'))
-
- /*
- //获取两个年 之间 的年份
- function enumerateDaysBetweenDates (startDate, endDate){
- let daysList = [];
- const start = moment(startDate);
- const end = moment(endDate);
- const day = end.diff(start, "year");
- daysList.push(start.format("YYYY"));
- for (let i = 1; i <= day; i++) {
- daysList.push(start.add(1, "year").format("YYYY"));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('2001','2005'))
- //for循环实现
- function enumerateDaysBetweenDates(startDate, endDate) {
- let daysList = [];
- for (let i = Number(startDate); i <= Number(endDate); i++) {
- daysList.push(String(i));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('2001', '2005'))
- */
-
- /*
- //不带 星期的
- function enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- let daysList = [];
- let SDate=moment(startDate);
- let EDate=moment(endDate);
- let xt;
- daysList.push(SDate.format("MM-DD"));
- while( SDate.add(1,"days").isBefore( EDate) ){ // 注意这里add方法处理后SDate对象已经改变。
- daysList.push( SDate.format("MM-DD") );
- }
- daysList.push( EDate.format("MM-DD") );
- return daysList;
- }
- console.log( enumerateDaysBetweenDates('2021-06-09','2021-06-12'))
- console.log( enumerateDaysBetweenDates('2021-06-09 23:00','2021-06-12 01:00'))
- console.log( enumerateDaysBetweenDates('2021-06-09 13:00','2021-06-12 21:00'))
- */
-
- /*
- //获取两个月份间的 月份
- function enumerateDaysBetweenDates(startDate, endDate) {
- let daysList = [];
- for (let i = Number(startDate); i <= Number(endDate)&&i<=12; i++) {
- daysList.push(String(i));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('6', '12'))
- //moment.js实现 跨年 且带 年份 不想要 几号可以去掉 DD
- function enumerateDaysBetweenDates(startDate, endDate) { // 假定你已经保证了startDate 小于endDate,且二者不相等
- let daysList = [];
- let SDate = moment(startDate);
- let EDate = moment(endDate);
- let xt;
- daysList.push(SDate.format("YYYY-MM-DD"));
- while (SDate.add(1, "month").isBefore(EDate)) { // 注意这里add方法处理后SDate对象已经改变。
- daysList.push(SDate.format("YYYY-MM-DD"));
- }
- daysList.push(EDate.format("YYYY-MM-DD"));
- return daysList;
- }
- console.log(enumerateDaysBetweenDates('2021-06-09', '2022-06-12'))
- */
-
-
- function enumerateDaysBetweenDates(startDate, endDate) {
- let daysList = [];
- for (let i = Number(startDate); i <= Number(endDate)&&i<=12; i++) {
- daysList.push(String(i));
- }
- return daysList;
- };
- console.log(enumerateDaysBetweenDates('6', '12'))
-
- script>
-
- html>