如何在Javascript中验证日期期间与其他日期期间的交叉

How to Validate Date Period Cross over with Other Date periods in Javascript?

本文关键字:日期 其他 验证 Javascript      更新时间:2023-09-26

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

如果我添加带有时间段的新住院信息,我需要验证新添加的日期是否与任何客户的现有时间段交叉。是否有任何现有的JavaScript验证可以做到这一点?

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

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);