【问题标题】:How to Validate Date Period Cross over with Other Date periods in Javascript?如何验证日期期间与 Javascript 中其他日期期间的交叉?
【发布时间】:2015-04-08 10:23:53
【问题描述】:

我有一个存储客户住院信息的列表。一位客户可能有多个住院详细信息,每个详细信息都有一个时间段(住院开始日期和出院日期)。

如果我添加带有时间段的新住院信息,我需要验证新添加的日期不会与任何客户的现有时间段交叉。是否有任何现有的 JavaScript 验证来执行此操作?

【问题讨论】:

  • 您是否希望代码检查某个范围内的输入日期?
  • 不,我需要日期范围与日期范围比较的代码。就像我从 4 月 1 日到 4 月 20 日添加了一个信息一样。然后如果我再次添加 4 月 5 日到 4 月 7 日,它应该限制..

标签: javascript jquery asp.net validation


【解决方案1】:

没有内置验证,但您可以轻松地自己编写此类验证。例如:

function periodOverlaps(testPeriod, periods) {
    for (var i = 0; i < periods.length; i++) {
        var period = periods[i];
        if (period.start < testPeriod.start && period.end > testPeriod.start)
            return true;
        if (period.start > testPeriod.start && period.start < testPeriod.end)
            return true;
    }

    return false;
}

使用示例:

var periods = [{
        start : new Date('1/1/2015'),
        end : new Date('1/3/2015')
    }, {
        start : new Date('1/5/2015'),
        end : new Date('1/7/2015')
    }
];

var testPeriod = {
    start : new Date('1/2/2015'),
    end : new Date('1/3/2015')
};

periodOverlaps(testPeriod, periods);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 2021-05-11
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多