且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何检查是否一个日期时间范围是另外3 MONTH日期范围内

更新时间:2022-06-23 03:08:17

您会叫IntervalInQuarters如下:

You would call IntervalInQuarters as follows:

IntervalInQuarters(new DateTime(2007, 10, 10), new DateTime(2009, 10, 11));



该函数返回季度的名单开始日期。注意,宿舍的范围搜索是在函数本身内定义。请根据您的情况进行编辑。他们关键的一点是要确保间隔/季度路口的逻辑是正确的。

The function returns a list of quarter start dates. Note that the range of quarters searched is defined within the function itself. Please edit as appropriate for your situation. They key point is to make sure the interval/quarter intersection logic is right.

private List<DateTime> IntervalInQuarters(DateTime myStartDate, DateTime myEndDate)
{
    DateTime quarterStart = new DateTime(2006, 06, 01);
    DateTime nextQuarterStart = new DateTime(2006, 09, 01);
    DateTime finalDate = new DateTime(2011, 01, 01);
    List<DateTime> foundQuarters = new List<DateTime>();

    while (quarterStart < finalDate)
    {
        // quarter intersects interval if:
        // its start/end date is within our interval
        // our start/end date is within quarter interval
        DateTime quarterEnd = nextQuarterStart.AddDays(-1);
        if (DateInInterval(myStartDate, quarterStart, quarterEnd) ||
            DateInInterval(myEndDate, quarterStart, quarterEnd) ||
            DateInInterval(quarterStart, myStartDate, myEndDate) ||
            DateInInterval(quarterEnd, myStartDate, myEndDate))
        {
            foundQuarters.Add(quarterStart);
        }

        quarterStart = nextQuarterStart;
        nextQuarterStart = nextQuarterStart.AddMonths(3);
    }

    return foundQuarters;
}

private bool DateInInterval(DateTime myDate, DateTime intStart, DateTime intEnd)
{
    return ((intStart <= myDate) && (myDate <= intEnd));
}