簡體   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