2015-11-09 194 views
8

有沒有什麼辦法可以使用moment.js庫來獲得當前月份的所有星期一DATES。使用Moment獲取所有星期一的日期,js

我知道我能得到月末有:

moment().endOf('month') 

可是如何才能讓當前/任何一個月的所有日期星期一。

我不想在JavaScript默認日期庫中的一些功能。請使用Moment Js Library參考代碼。

+0

[如何獲得4週一JS一個月?(HTTP的可能重複:// stackoverflow.com/questions/9481158/how-to-get-the-4-monday-of-a-month-with-js) – JotaBe

+0

@JotaBe請使用Moment Js Library參考代碼。我不想分析JavaScript默認日期庫 –

回答

10

我剛讀文檔,並沒有發現返回數組的任何方法,所以你只需要使用循環做

var monday = moment() 
    .startOf('month') 
    .day("Monday"); 
if (monday.date() > 7) monday.add(7,'d'); 
var month = monday.month(); 
while(month === monday.month()){ 
    document.body.innerHTML += "<p>"+monday.toString()+"</p>"; 
    monday.add(7,'d'); 
} 

check this out

+1

編輯您的答案,使其適用於所有月份。問題是,'.day(「星期一」)'實際上可能會倒退到前一個月,這取決於月份邊界在一週內的情況,所以您必須爲此進行測試。然後,'.add(7,'d')'更清潔,因爲如果需要的話,可以在一個地方更改星期幾。 –

8

更新

我給這個有點drop in。將它添加到您的網頁:

<script src="https://gist.github.com/penne12/ae44799b7e94ce08753a/raw/moment-daysoftheweek-plus.js"></script> 

然後:

moment().allDays(1) //=> [...] 
moment().firstDay(1) 

等等 - 隨時檢查出source

舊帖子

這個功能應該工作:

function getMondays(date) { 
    var d = date || new Date(), 
     month = d.getMonth(), 
     mondays = []; 

    d.setDate(1); 

    // Get the first Monday in the month 
    while (d.getDay() !== 1) { 
     d.setDate(d.getDate() + 1); 
    } 

    // Get all the other Mondays in the month 
    while (d.getMonth() === month) { 
     mondays.push(new Date(d.getTime())); 
     d.setDate(d.getDate() + 7); 
    } 

    return mondays; 
} 

用法:本月的getMondays()或不同月份的getMondays(moment().month("Feb").toDate())

jabclab's Stack Overflow Answer,修改爲包含自定義日期參數。

+0

感謝您的參與。儘管如此,您可以打開問題列表或允許PR,但仍有一些錯誤: – webnoob

+0

@webnoob - 這是一個要點 - 所以它不接受prs。隨意分叉並改變它,我會修改答案:) –

+0

我會檢查我的代碼並儘快排序。 – webnoob

2

我知道這是舊的,但這個是谷歌首先提出的。

你可以得到所有星期一在使用我的moment-weekdaysin moment.js插件月份:

moment().weekdaysInMonth('Monday'); 
相關問題