【问题标题】:How to get number of days(intersection) between two date ranges/Count of days intersecting between two date ranges in Javascript/Moment如何获取两个日期范围之间的天数(交集)/Javascript/Moment 中两个日期范围之间相交的天数
【发布时间】:2019-03-19 18:58:12
【问题描述】:

TotalStartDate:01/28 TotalEndDate:02/22

我有很多日期,比如

数据:

StartDate2:01/27 endDate2:02/02
StartDate2:02/03 endDate2:02/09
StartDate2:02/10 endDate2:02/16
StartDate2:02/17 endDate2:02/23


dateRanges=[
{"startDate":01/27,"EndDate":02/02}
{"startDate":02/03,"EndDate":02/09}
{"startDate":02/10,"EndDate":02/16}
{"startDate":02/17,"EndDate":02/23}
]

现在我不需要在初始日期范围内获取与数据范围匹配的日期

[0] 索引数据范围从 01/27 开始,TotalStartDate 从 01/28 开始,因此浪费了 1 天,而应该只计算 6 天

[1] 索引数据范围从 02/03 开始​​,TotalStartDate 从 01/28 开始 [1] 索引数据范围的所有日期都在 TotalStartDate 和 TotalEndDate 之内,因此计数应为 7

[2] 计数 7

[3] 计数 6 作为 enddate 大于 totalEndDate 。

【问题讨论】:

  • 为了清楚起见,请发布确切的数组

标签: javascript ecmascript-6 momentjs


【解决方案1】:

这是您要找的东西吗?

我们可以使用的算法来实现这一点:

  • 假设我们有 dateRanges 数组、inputStartDate、inputEnddate 作为输入。
  • 我们必须遍历我们的 dateRanges 数组,以便我们可以根据条件计算天数。
  • 让我们计算要考虑的开始日期(是数组中的 startDate 还是输入的开始日期。同样,我们需要确定要考虑的 endDate。
  • 最后,当我们收到要考虑的开始日期和结束日期时,我们可以简单地计算两个日期之间的差异。

下面是相同的代码。

我有我的 dateRanges 数组、inputStartDate、inputEnddate 和我的逻辑来计算输入范围之间的天数,如下所示:

let dateRanges=[
{"startDate":"01/27","EndDate":"02/02"},
{"startDate":"02/03","EndDate":"02/09"},
{"startDate":"02/10","EndDate":"02/16"},
{"startDate":"02/17","EndDate":"02/23"}
]
let inputStartDate = "01/28"

let inputEndDate = "02/22"

dateRanges.forEach(eachDate => {
    var endDateToConsider = moment(eachDate.EndDate+'/2019').isAfter(inputEndDate+"/2019") ? inputEndDate: eachDate.EndDate;
    var startDateToConsider = moment(eachDate.startDate+'/2019').isAfter(inputStartDate+"/2019") ? eachDate.startDate : inputStartDate
    var daysDifference = moment(endDateToConsider+'/2019').diff(moment(startDateToConsider+'/2019'), 'days') + 1
    console.log(daysDifference)

})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多