我使用 Lodash 和 Momentjs 创建具有以下结构的 JSON 日期范围: {“天”:[],“月”:[]}
问题是:
- 目前已创建日期,但创建的日期超出了必要的范围,因此存在大量重复
- 问题适用于月份数组和天数数组
这个方法花了大约 2 天的时间,但找不到为什么它不起作用。
var startDate = moment();
var endDate = moment().add(61, 'days');
var months = [];
var range = {};
range.days = [];
range.months = [];
var currDate = startDate.clone().startOf('day');
var lastDate = endDate.clone().startOf('day');
while (currDate.add(1, 'days').diff(lastDate) < 0) {
var month = {};
month.name = currDate.clone().format('MMMM');
month.year = currDate.clone().format('YYYY');
var currentMonthDaysInTotal = moment(month.year + "-" + moment().month(currDate), "YYYY-MM").daysInMonth();
var daysIndex = 1;
while (daysIndex <= currentMonthDaysInTotal) {
var newDateForList = moment([month.year, moment().month(month.name).format('M'), daysIndex]);
if (newDateForList >= startDate && newDateForList <= endDate) {
range.days.push(newDateForList);
}
daysIndex++;
}
if (months.length === 0) {
months.push(month);
}
//regarder avec mitch
if (_.findIndex(range.months, function(o) {
return o.name !== month.name;
}) === -1) {
range.months.push(month);
}
}
console.log(range);
这是一个 JSFiddle,其中包含我想要执行的操作的代码: https://jsfiddle.net/Keldarne/LdLc6u0t/
最佳答案
这符合您想要的吗?
var startDate = moment();
var endDate = moment().add(61, 'days');
var months = [];
var range = {};
range.days = [];
range.months = [];
var currDate = startDate.clone().startOf('day');
var lastDate = endDate.clone().startOf('day');
var monthYear = undefined;
while (currDate.add(1, 'days').diff(lastDate) < 0) {
range.days.push(currDate.clone());
var month = currDate.clone().format('MMMM'),
year = currDate.clone().format('YYYY');
if( month.concat( year ) !== monthYear ){
range.months.push({
name: month,
year: year
});
}
monthYear = month.concat( year );
}
console.log(range);
关于javascript - 需要帮助找出我的日期范围创建有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44926059/