Moment.js范围 - 在片刻范围内获取特定的工作日

时间:2018-01-30 08:58:24

标签: javascript ecmascript-6 momentjs

我有一系列日期:

var from = moment("01/01/2018", "DD/MM/YYYY")
var to = moment("31/01/2018", "DD/MM/YYYY")
var range = moment.range(from, to)

我需要的是在特定日期内获得上述范围的范围! 例如:如果我只需要周一到周四的范围,结果将是:

  

01/01/2018 - 04/01/2018
08/01/2018 - 11/01/2018
15/01/2018 -   18/01/2018
22/01/2018 - 25/01/2018
29/01/2018 - 31/01/2018

请注意,用户可能需要获取以下日期的天数:星期一,星期三,星期四,星期日 - 这会让事情变得复杂......

在片刻范围内有没有一种聪明的方法可以做到这一点,而不是从一个范围数组中读取每一天并在一天之内得到结果?

问题的一个解决方案是将范围分成几天:

例如:让工作日为:0 =星期日,1 =星期一,2 =星期二......等等

var weekdays = [0,1,2,3]
var range = moment.range(from, to)
rangeDate = Array.from(range.by('day',{ step: 1 }))
dailyRange = rangeDate.filter( date => weekdays.includes(date.day()) )

结果是数组中需要过滤的天数! 这样做的问题是你得到的是每日结果,而不是范围结果可以应用范围(当按顺序2天或更多天时)!

0 个答案:

没有答案