Javascript 如何使用moment js获得重叠两个月的星期一?

Javascript 如何使用moment js获得重叠两个月的星期一?,javascript,arrays,date,momentjs,Javascript,Arrays,Date,Momentjs,我需要在周一使用api创建一些记录 获取星期一的规则是,它应该是给定月份的第一个星期一或给定月份的最后一个星期一 例如: 如果输入日期范围为2020年9月1日至2020年9月30日,我需要提取2020年9月28日 如果输入日期范围为2020年10月1日至2020年10月31日,我需要提取2020年10月26日 如果输入日期范围为2020年11月1日至2020年11月30日,我需要提取2020年11月30日 如果输入日期范围为2020年11月1日至2020年12月31日,我需要提取2020年12月

我需要在周一使用api创建一些记录

获取星期一的规则是,它应该是给定月份的第一个星期一或给定月份的最后一个星期一

例如:

如果输入日期范围为2020年9月1日至2020年9月30日,我需要提取2020年9月28日

如果输入日期范围为2020年10月1日至2020年10月31日,我需要提取2020年10月26日

如果输入日期范围为2020年11月1日至2020年11月30日,我需要提取2020年11月30日

如果输入日期范围为2020年11月1日至2020年12月31日,我需要提取2020年12月28日

到目前为止,我所做的是提取给定月份的所有周一,并将它们存储在一个数组中。我试着拉每月的第一个或最后一个星期一,但这几个月有效,其他几个月无效

因此,我在想,如果我知道某一天(星期一)的一周,它与两个月重叠,那么我就可以提取该星期一


所以我的问题是如何得到一周中的星期一,它重叠两个月?我正在使用MomentJS。

可能太晚了,但它可能对未来的观众有所帮助

该函数采用
开始
结束
,但我们只使用
结束
,因此您可以取消
开始
,因为所有操作都将在
结束
日期进行,以便获得最后一个星期一。为了实现我们的目标,我们需要做两个简单的步骤:

  • 使用
    end
    日期获取月底
  • 获取上一个“计算”日期的星期一
  • 对于第一步,我们使用以获得月底(最后一天)

    通过将原始力矩设置为一个时间单位的末尾来对其进行变异

    然后我们可以得到星期一的日期,我们可以使用上一步的日期

    获取或设置一周中的某一天。[…]从2.1.0开始,还支持日名称。这是在当前的语言环境中解析的

    以您的示例为例,我们可以测试我们的功能:

    函数lastMonday(开始、结束){
    log('Start is',moment(Start).format('LL');
    log('End is',moment(End).format('LL');
    返回时刻(结束).endOf('month').day('Monday');
    }
    console.log(‘上周一是’、上周一(‘2020-09-01’、‘2020-09-30’)。格式(‘LL’);
    console.log(‘上周一是’、上周一(‘2020-10-01’、‘2020-10-31’)。格式(‘LL’);
    console.log(‘上周一是’、上周一(‘2020-11-01’、‘2020-11-30’)。格式(‘LL’);
    console.log(‘上周一是’、上周一(‘2020-11-01’、‘2020-12-31’)。格式(‘LL’)
    
    你如何知道你是否需要得到某个月的第一个或最后一个星期一?我不需要知道。如果我有一周的时间,它与接下来的两个月重叠,那将是正确的星期一。理想情况下,每月只应在月初创建一次记录。不要太晚:)。正是我想要的。这段时间,我一直在循环。虽然它可以做到,但它不像这个那么干净。非常感谢。