javascript - 需要帮助找出我的日期范围创建有什么问题

标签 javascript momentjs lodash

我使用 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/

相关文章:

javascript - JS中通过querySelectorAll获取所有条目

javascript - 时分秒两个时间戳之间的差异

javascript - 获取最新出现的对象值

javascript - 使用 lodash 按可选属性对 javascript 数组进行排序

javascript - 如何在纯 JS 中按特定字段(如 _.sortBy)对对象进行排序?

javascript - AJAX 未将日期发布到 PHP

javascript - coords.accuracy 是如何测量的,它的单位是什么?

php - 识别选中的复选框序列然后保存到 mysql 数据库

javascript - 矩减法的不一致

javascript - 获取尊重时间格式而不是上一个时间格式的下一个时间