使用步骤
1.先引入 moment.js
cdn 引入
<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>
或者 直接下载 下来 。如果是 框架里 用
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'))
所有代码
<!DOCTYPE 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>Document</title>
</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>