如何在Javascript中验证日期与其他日期相交?

时间:2015-04-08 10:23:53

标签: javascript jquery asp.net validation

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

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

1 个答案:

答案 0 :(得分:2)

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

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