【问题标题】:Using momentjs / lodash, how can I add days / weeks between 2 dates?使用momentjs / lodash,如何在两个日期之间添加天/周?
【发布时间】:2016-09-20 01:39:15
【问题描述】:

我有一个开始日期(星期日)和一个结束日期(星期六),我想创建一个数组,其中包含它们之间的所有星期日。

这是我目前所拥有的:

weeks = [{
      start: startDate,
      end: angular.copy(startDate).add(6, 'days')
    }];

    while(_.last(weeks).end <= endDate) {
      weeks.push({
        start: angular.copy(_.last(weeks)).start.add(7, 'days'),
        end: angular.copy(_.last(weeks)).end.add(7, 'days')
      })
    }

这感觉很混乱,而且不知何故是错误的。当它应该只添加一天时,它会添加多天。 end 日期我并不特别在意,但如果我能得到它,我会接受它。

【问题讨论】:

    标签: javascript momentjs lodash


    【解决方案1】:

    以下是一个基于 while 循环的简单解决方案。我认为 lodash 语法只会在这种情况下使问题复杂化。

    从第一个星期日开始,并不断增加 7 天,直到过了最后一个星期六。将 moment 对象的克隆推送到数组中。如果你不克隆,你最终会得到一个与你继续引用单个时刻对象相同日期的列表,在本例中为start

    var start =  moment('2016-09-18'); //last sunday
    var finish = moment('2016-10-29'); //saturday in october
    
    // an array of moment objects
    var sundays = [start.clone()]; // include the first sunday
    
    // foreach additional sunday, clone it into an array
    while(start.add(7, 'days').isBefore(finish)) {
      sundays.push(start.clone());
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多