繁体   English   中英

如何使用moment js获得与2个月重叠的一周中的星期一?

[英]How to get monday of the week which overlaps 2 months using moment js?

我需要在星期一使用 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 日。

到目前为止,我所做的是提取给定月份的所有星期一并将它们存储在一个数组中。 我尝试拉取本月的第一个或最后一个星期一,但这适用于几个月而不适用于其他几个。

因此,我在想,如果我了解与 2 个月重叠的给定日期(星期一)的那一周,那么我可以拉那个星期一。

所以我的问题是如何获得与 2 个月重叠的每周星期一? 我正在使用时刻js。

也许为时已晚,但它可能对未来的观众有所帮助。

该函数采用startend ,但我们只使用end ,因此您可以摆脱start因为所有操作都将在end日期以获得最后一个星期一。 为了实现我们的目标,我们需要做两个简单的步骤:

  1. 获取带有end日期的end
  2. 获取上一个“计算”日期的星期一。

第一步,我们使用End of Time来获取月末(最后一天)。

通过将原始时刻设置为单位时间的结尾来改变原始时刻。

然后我们可以得到日期所在的星期几,我们可以使用星期几和上一步的日期。

获取或设置星期几。 [...] 从 2.1.0 开始,还支持日期名称。 这是在当前的当前语言环境中解析的。

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

 function lastMonday(start, end) { console.log('Start is ', moment(start).format('LL')); console.log('End is ', moment(end).format('LL')); return moment(end).endOf('month').day('Monday'); } console.log('Last monday is', lastMonday('2020-09-01', '2020-09-30').format('LL')); console.log('Last monday is', lastMonday('2020-10-01', '2020-10-31').format('LL')); console.log('Last monday is', lastMonday('2020-11-01', '2020-11-30').format('LL')); console.log('Last monday is', lastMonday('2020-11-01', '2020-12-31').format('LL'));
 <script src="https://momentjs.com/downloads/moment.js"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM